首页 > 数据库 >Redis五大数据类型以及常用命令

Redis五大数据类型以及常用命令

时间:2023-06-07 20:44:06浏览次数:49  
标签:--- set01 数据类型 eg Redis ---- key 常用命令

Redis五大数据类型以及常用命令

redis常用五大数据类型

String (字符串)、List(列表)、Hash(哈希表)、Set(无序集合)、Zset(有序集合)

redis数据库常见使用命令

  • redis-server : redis服务器启动命令
  • redis-cli : 客户端,操作入口
  • select 【dbid】 : 切换数据库
  • dbsize : 查看当前数据库key的数量
  • flushdb : 清空当前库
  • fliush : 通杀所有库
  • keys * : 查看当前库所有key
  • exists key : 查看key是否存在
  • type key : 查看key是什么类型
  • del key : 删除指定的key数据
  • unlink key : 异步删除指定key
  • expire key 10 : 为给定的key设置过期时间
  • ttl key : 查看指定key还有多久过期 -1永不过期 -2已经过期

redis常见五大类型以及常用命令

Redis字符串-String

String 类型是 Redis 最基本的数据类型,一个 Redis 中字符串 value 最多可以是 512M

set/get/del/append/strlen

1.set---设置值                		    eg:set key value
2.get---获取值				   		    eg:get key
3.mset---设置多个值        	  		  eg:mset name xyy age 18 height 180
3.mget---获取多个值	 		  		  eg:mget name age height
4.setex---设置键值以及过期时间			eg:setex <key><过期时间><value>
5.del---删除         		    		 eg:del name
6.strlen---查看字符串长度  	 		  eg:strlen  height
7.append---追加值到指定key后	 		  eg:append	key	value
8.setnx---只有在 key 不存在时 设置 key 的值 eg:setnx <key> <value>
9.msetnx---同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
		eg:msetnx <key1><value1><key2><value2> ....

incr/decr/incrby/decrby

1.incr---每次自增1    eg:incr age
2.decr---每次自减1    eg:decr age
3.incrby---自定义自增多少  eg:incrby age 5
4.decrby---自定义自减多少  eg:decrby age 5

getrange/setrange

1.getrange ---- 获取指定区间范围内的值,类似between....and的关系 
2.setrange ---- 代表从第几位开始替换,下脚本从零开始
3.getrange key 0 -1 ---从0 -1表示获取全部

Redis列表-List

单键多值

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头 部(左边)或者尾部(右边)。

它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节 点性能会较差

lpush/rpush/lpop/rpop/lrange/rpoplpush

lpush ---- 从左边插入数据   lpush a1  1 2 3 4 5  倒序排列
rpush ---- 从右边插入数据   rpush a2  1 2 3 4 5  正序排列
lpop ---- 移除最左元素  lpop a1 删除元素5
rpop ---- 移除最右元素  rpop a1 删除元素1
lrange ---- 获取指定长度    lrange  a1  0  -1  获取a1 中的所有值
rpoplpush s1 s2 ---- 将s1中最后一个压入s2中第一位

lindex/llen/lrem key/ltrim key

lindex ---- 按照索引获取元素  lindex a1 2  获取元素3
llen ---- 获取列表长度  llen l1 获取列表l1长度
lrem a1 2 1---删N个value   在a1中删除2个1
ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim a1 0 2    截取l1从0到2的数据重新赋值给a1,a1中数据改变

lset key index value

lset s1 0 x ---- 将s1中第一位换成x

linsert key before/after

linsert s1  before x python  在x之前加字段python
linsert s1  after x java  在x之前加字段java

Redis集合-Set

list 类似是一个列表的功能,特殊之处在于 set 是可以自动排重的

Redis 的 Set 是 string 类型的无序集合。它底层其实是一个 value 为 null 的 hash 表,所以添加,删除,查找的复杂度都是 O(1)。

sadd/smembers/sismember

sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3  自动去掉重复
smembers set01   得到set01
sismember set01 1  如果存在返回1  不存在返回0

scard

scard ---- 获取集合里面的元素个数
scard set01

srem key value

srem ---- 删除集合中元素
srem set01 3 ---- 删除set01中的3

srandmember key(原来集合不变)

srandmembe ---- 随机选出几个数
sadd set02  1 2 3 4 5 6 7 8
srandmember set02  2 ---- 随机选出两个数且原来集合不变

spop key(原来集合发生变化)

spop ---- 随机出栈
spop set01

smove key1 key2

sadd set03 x y z 
smove set01 set03 2  将set01中的2 移动到set03中

集合类

sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
差集
SDIFF set01 set02   返回 4 5
交集
SINTER set01 set02   返回 1 2 3
并集
SUNION set01 set02  返回set01 set02 中的值  

Redis哈希表-Hash

Redis hash 是一个键值对集合。

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象.

通过 key(用户 ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数 据,也不会带来序列化和并发修改控制的问题

hset/hget/hmset/hmget/hgetall/hdel

设值/取值/设值多个值/取多个值/取全部值/删除值
hset user id 11 ---- 设置值
hget user id ---- 获取值 
hmset anb id 11 name xyy age 18 ---- 设置多个值
hmget anb id name age ---- 获取多个值,只返回相应的值
hgetall   anb ---- 返回全部值
hdel anb id ---- 删除id

hlen

hlen anb ---- 求哈希长度 

hexists key

hexists name ---- 确定key中是否存在某个值
存在返回1 ,不存在返回0

hkeys/hvals

hkeys anb ---- 获取所有的键
hvals anb ---- 获取所有的值

Redis有序集合-Zset

Redis 有序集合 zset 与普通集合 set 非常相似,是一个没有重复元素的字符串集合。

不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用 来按照从最低分到最高分的方式排序集合中的成员。

集合的成员是唯一的,但是评分可以是重复了 。

因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获 取一个范围的元素。 访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成 员的智能列表

zadd/zrange

zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1 ---- 返回集合中所有值

zrangebyscore key start end

zrangebyscore key start end----根据开始结束来取值
zrangebyscore zset01 60 70

zrangebyscore zset01 60 (90   表示不包含90

zrangebyscore zset01  60 90  limit  1 2  从第一条开始截取2条

zrem key

zrem key value---- 某score下对应的value值,作用是删除元素
zrem zset01 v1 ----- 删除zset01中的v1

zcard/zcount key score 区间/zrank key values

zcard   求zset01元素总数
zcount  zset01 60 90  求60-90中间的元素个数
zrank   zset01  v2   返回1  返回对应下角标,从0开始

redis其他命令

redis 命令手册

标签:---,set01,数据类型,eg,Redis,----,key,常用命令
From: https://www.cnblogs.com/wangqingcui/p/17464499.html

相关文章

  • 2023-06-07:Redis 持久化方式有哪些?以及有什么区别?
    2023-06-07:Redis持久化方式有哪些?以及有什么区别?答案2023-06-07:Redis提供了两种持久化机制:RDB和AOF。RDBRDB持久化是将Redis当前进程中的数据生成快照并保存到硬盘的过程。快照指的是Redis在某一时刻的内存状态的记录,类似于拍照一样把数据保存下来,因此也被称为Redis的数据库快照(Re......
  • 2023-06-07:Redis 持久化方式有哪些?以及有什么区别?
    2023-06-07:Redis持久化方式有哪些?以及有什么区别?答案2023-06-07:Redis提供了两种持久化机制:RDB和AOF。RDBRDB持久化是将Redis当前进程中的数据生成快照并保存到硬盘的过程。快照指的是Redis在某一时刻的内存状态的记录,类似于拍照一样把数据保存下来,因此也被称为Redis的数据库快照(Re......
  • Redis 消息的发布与订阅
    1.Redis发布订阅1.1.Redis发布订阅的简介Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis客户端可以订阅任意数量的频道。1.2.Redis发布订阅示意图订阅:消息订阅者(client2、client5和client1)订阅频道channel1发布......
  • 第3天学习Docker-Docker部署常见应用(MySQL、Tomcat、Nginx、Redis、Centos)
    前提须知:(1)搜索镜像命令格式:dockersearch镜像名(2)设置Docker镜像加速器详见文章:Docker设置ustc的镜像源(镜像加速器)1、部署MySQL拉取镜像(这里拉取mysql5.7版本)[root@localhost~]#dockerpullmysql:5.7创建容器(默认运行)[root@localhost~]#dockerrun-di--name=my_mysql-p330......
  • java面试(30)- redis
    1:Redis支持的数据类型a)字符串keyvalb)hashkeynamefiledc)listkeyv1v2v3v3d)setkeyv1v2v3d)zsetkeysv2:Redis支持的事务3:为什么redis快 4:redis的优缺点1、优点a)数据类型丰富b)支持数据......
  • java中基本数据类型和包装数据类型
    基本数据类型和包装数据类型在Java中有着重要的区别和联系,对于Java程序员来说,熟悉这两种数据类型的特点和使用方法是非常必要的。 基本数据类型 Java中的基本数据类型一共有8种,分别为:-byte-short-int-long-float-double-char-boolean基本数据类型是指可以......
  • redis-cli连接并管理redis集群
    某些场景下,redis集群以内网ip发现节点并提供服务,所以只能在服务器环境下以内网ip访问,此时redis-cli无疑是最可靠的工具。而各种gui工具都傻眼了(当然webui类工具除外)。redis-clinodejs版redis-clinodejs版可以脱离redis-server独立安装。安装yuminstallepel-releas......
  • mysql 常用命令总结
    mysql常用命令总结1、修改mysql密码mysqladmin-u用户名-p旧密码password新密码命令行setpasswordforroot=PASSWORD("root");2、增加mysql新用户并授权:createuser'test'@'localhost'identifiedby'test'grant select,update,delete,inserton库名.......
  • 通过redis学网络(1)-用go基于epoll实现最简单网络通信框架
    本系列主要是为了对redis的网络模型进行学习,我会用golang实现一个reactor网络模型,并实现对redis协议的解析。系列源码已经上传githubhttps://github.com/HobbyBear/tinyredis/tree/chapter1redis的网络模型是基于epoll实现的,所以这一节让我们先基于epoll,实现一个最简单的服......
  • Redis实现限流的三种方式
    一、固定窗口所谓固定窗口限流即时间窗口的起始和结束时间是固定的,在固定时间段内允许要求的请求数量访问,超过则拒绝;当固定时间段结束后,再重新开始下一个时间段进行计数。我们可以根据当前的时间,以分钟为时间段,每分钟都生成一个key,用来inc,当达到请求数量就返回一些友好信息。......