redis常用的五种数据类型
 
文档
 
- redis单机安装
 - redis数据类型-位图bitmap
 
 
说明
 
- 官网操作命令指南页面:https://redis.io/docs/latest/commands/?name=get&group=string
 
 
常用命令
 
keys *:查看所有键exists k1 k2:键存在个数type k1:键k1对应值的数据类型del k1:删除键k1unlink k1:非阻塞删除ttl k1:k1的过期时间expire k1 10:给k1设置过期时间,10sselect 1:切换到数据库1move k1 1:将k1移动到数据库1dbsize:查看当前库键的数量flushdb:清空当前库flushall:清空全部库help @string:查看string类型的操作命令
 
redis常用的五种数据类型
 
1. 字符串:String
 
基本命令
 
set k1 hello nx:键k1不存在时设置成功set k1 hello xx:键k1存在时设置(更新)成功set k1 hello get:键k1设置新值,并返回上次设置的值set k1 hello ex 10:键k1设置值,并设置过期时间,10sset k1 hello px 10000:键k1设置值,并设置过期时间,10000毫秒set k1 hello exat 1745055900:键k1设置值,并设置到期时间,unix时间戳,秒值set k1 hello keepttl:键k1设置值,并保持当前的过期时间
 
批量命令
 
mset k1 hello k2 world:批量设置,键k1、k2分别设置值mget k1 k2:批量获取值,键k1、k2分别获取值msetnx k1 hi k3 nihao:批量设置,键都不存在时设置成功,保证原子性
 
范围操作
 
getrange k1 0 3:获取k1值下标[0,3]部分的字符串,左闭右闭getrange k1 0 -2:获取k1值下标0到-2部分的字符串,-2表示倒数第2个,-1表示最后1个setrange k1 1 aabb:设置k1的值,从原来的值下标为1的字符开始,对应下标的值替换为aabb
 
数值操作
 
incr k1:键k1的值自增1,键k1的值要保证是数字incrby k1 2:键k1的值自增2decr k1:键k1的值自减1decrby k1 2:键k1的值自减2
 
其它操作
 
strlen k1:获取键k1的值占用的子节数append k1 aabb:字符串追加getset k1 hello:键k1设置新值,并返回上次设置的值,与set k1 hello get相同
 
其它说明
 
SETEX、SETNX、PSETEX命令可能会在未来版本中淘汰
 
2. 列表:List
 
基本命令
 
lpush list1 1 2 3:从队列左边加入依次加入元素,新元素在队列头部rpush list1 1 2 3:从队列右边加入依次加入元素,新元素在队列尾部lrange list1 0 -1:从队列左边到右边,也就是队列头部到尾部的顺序,依次获取元素lpop list1:从队列左边,也就是头部,弹出一个元素rpop list1:从队列右边,也就是尾部,弹出一个元素lindex list1 0:获取下标为0的元素,队列头部到尾部的顺序llen list1:获取列表元素个数lrem list1 3 1:从队列左边到右边,也就是队列头部到尾部的顺序,删除3个值为1的元素ltrim list1 2 5:从队列左边到右边顺序,截取下标2-5的元素,左闭右闭,作为list1新的值rpoplpush list1 list2:弹出list1尾部的元素,加入到list2的头部lset list1 1 5:下标为1的元素,重新赋值为5linsert list1 before 1 0:值为1的元素前面,添加新元素0linsert list1 after 1 2:值为1的元素后面,添加新元素2
 
3. 哈希表:Hash
 
基本命令
 
hset hashmap1 id 1 name zhangsan:向hashmap1中加入id、name属性并赋值hmset hashmap1 id 1 name zhangsan:向hashmap1中加入id、name属性并赋值,与hset相同hget hashmap1 id:获取hashmap1中,id属性的值hmget hashmap1 id name:获取hashmap1中,id、name属性的值hgetall hashmap1:获取hashmap1中,所有的属性及值hdel hashmap1 id:删除hashmap1中,id属性hlen hashmap1:获取hashmap1属性的个数hexists hashmap1 id:判断hashmap1中,是否存在id属性hkeys hashmap1:获取hashmap1中,所有的属性hvals hashmap1:获取hashmap1中,所有属性的值hsetnx hashmap1 age3 20:不存在hashmap1,或hashmap1中不存在age3属性,设置成功
 
数值操作
 
hincrby hashmap1 age 2:hashmap1中age属性的值自增2,age属性的值要保证是数字hincrbyfloat hashmap1 score 0.5:hashmap1中score属性的值自增0.5
 
4. 集合:Set
 
基本命令
 
sadd set1 1 1 2 3:添加元素,自动去重smembers set1:获取set1的所有元素sismember set1 3:判断元素3是否在set1中srem set1 1 2:删除set1中元素1、元素2scard set1:获取元素个数srandmember set1 2:随机获取2个元素spop set1 2:随机弹出2个元素,删除smove set1 set2 3:元素3从set1中弹出,添加到set2中,无该元素则不执行
 
集合运算
 
sdiff set1 set2:查询属于set1,但不属于set2的元素,差集,set1 - set2sunion set1 set2:查询属于set1或set2的元素,并集,set1 ∪ set2sinter set1 set2:查询属于set1,并且属于set2的元素,交集,set1 ∩ set2sintercard 2 set1 set2 limit 10:查询2个集合中,交集元素的个数,最多查询10个
 
5. 有序集合:ZSet
 
基本命令
 
zadd zset1 20 zhangsan 30 lisi 40 wangwu 20 maliu 25 wangwu:添加元素,根据值去重,取后面设置的分数zrange zset1 0 -1:获取zset1的所有元素,分数从小到大zrange zset1 0 -1 withscores:获取zset1的所有元素及分数,分数从小到大zrevrange zset1 0 -1:获取zset1的所有元素,分数从大到小zrange zset1 20 25 byscore:获取分数在20到25之间的元素,左闭右闭,与zrangebyscore zset1 20 25相同zrange zset1 20 25 byscore limit 1 2:获取分数在20到25之间的元素,左闭右闭,下标是1开始,取2个zrange zset1 20 25 byscore withscores:获取分数在20到25之间的元素及分数,左闭右闭zrange zset1 (20 25 byscore:获取分数在20到25之间的元素,不包括20,左开右闭zscore zset1 zhangsan:获取元素分数zcard zset1:获取元素个数zrem zset1 zhangsan lisi:删除zet1中元素zhangsan、元素lisizincrby zset1 20 wangwu:给wangwu的分数增加20zcount zset1 20 30:获取分数在20到25之间的元素个数zmpop 2 zset1 zset2 min count 2:找到第一个非空有序集合,弹出该集合中分数最小的2个元素zrank zset1 wangwu:获取wangwu在zset1的下标,下标从0开始zrevrank zset1 wangwu:获取wangwu在zset1中,倒序的下标,下标从0开始
 
redis其它数据类型
 
- 地理空间:GEO
 - 基数统计:HyperLogLog
 - 位图:bitmap
 - 位域:bitfield
 - 流:Stream