redis基本数据类型
2022-08-09 11:37:59 9 举报
AI智能生成
redis基本数据类型 命令操作大全
作者其他创作
大纲/内容
String类型
表达类型
字符串
整数
浮点数
常见命令
set
命令 set [key] [value] 赋值操作
get
命令 get [key] 取值
getset
命令 getset [key] [value] 取值并赋值
setnx
命令 setnx [key] [value] 当key不存在时赋值 | set key value NX PX 3000 原子操作,px 设置毫秒数
append
命令 append [key] [value] 向字符串尾部添加数据
strlen
命令 strlen [key] 获取字符串长度
incr
命令 incr [key] d递增数字
incrBy
命令 incrBy key [increment] 给key添加指定的整数 例如 incrBy key1 10;
decr
命令 decr [key] 递减数字
decrBy
命令 decrBy [key] [increment] 数字减少制定的整数
应用场景
key和值都为字符串
普通的赋值
incr 整数递增,用于实现乐观锁+watch(事务)
setnx 用于实现 分布式锁;例如 当value不存在时采用赋值 setnx name zhangs 命令结果返回 1 如果返回0 表示已经存在
List列表类型
类型说明
可存储有序,可重复的数据元素
基于底层数据结构导致获取头部和尾部的元素速度极快
list元素的个数为 2^32-1个
常见命令
lpush
命令 lpush [key] v1 v2 v3.....
从左侧插入列表
lpop
命令 lpop [key]
从列表左侧取出数据
rpush
命令 rpush key v1 v2 v3...
从右侧插入列表
rpop
命令 rpop [key]
从列表右侧取出元素
lpushx
命令 lpushx [key] [value]
将值插入到列表头部
rpushx
命令 rpushx [key] [value]
将值插入到列表尾部
blpop
命令 blpop [key] [timeout]
从列表左侧取出数据,如果列表为空阻塞,可以设置最大阻塞时间 单位为 秒
brpop
命令 brpop [key] [timeout]
从列表y右侧取出数据,如果列表为空阻塞,可以设置最大阻塞时间 单位为 秒
llen
命令 llen [key]
获取列表中元素个数
lindex
命令 lindex [key] [index]
获得列表中下标为index的元素 index从0开始
lrange
命令 lrange [key] [start] [end]
返回列表中指定区间的元素,区间通过start和end指定
lrem
命令 lrem [key] [count] [value]
删除列表中 key下面与value相等的元素,count>0 从左边开始删除,count< 0从右边开始删除,count=0删除所有元素
lset
命令lset [key] [index] [value]
给下标为index设置vaule
ltrim
命令 ltrim [key] [start] [end]
对列表进行修改,只保留start-end区间
rpoplpush
命令 rpoplpush [key1] [key2]
从key1列表右侧弹出并插入到key2列表左侧
brpoplpush
命令 brpoplpush [key1] [key2]
从key1列表右侧弹出并插入到key2列表左侧,{会阻塞}
linsert
命令 linsert [key] [BEFORE]/[AFTER] [pivot] [value]
将value插入到列表,且位于值pivot之前或之后
应用场景
作为 栈或者队列使用 ;因为是list 列表有序
可用于各种列表,比如用户列表、商品列表、评论列表等。
Set集合类型
类型说明
无序;唯一元素
集合中最大的个数为 2^32-1
常见命令
sadd
命令 sadd [key] mem1 mem2.....
集合添加新成员
srem
命令 srem [key] mem1 mem2 ....
删除集合中指定成员
smembers
smembers [key]
获取集合中的所有元素
spop
命令 spop [key]
随机返回集合中一个元素 ,并删除该元素
srandmember
命令 srandmember [key]
随机返回集合中一个元素,不删除该元素
scard
命令 scard [key]
获取集合中元素的个数
sismember
命令 sismember [key] [mem]
判断元素mem是否在集合中
sinter
命令 sinter [key1] [key2]..
求多集合的交集
sdiff
命令 sdiff [key1] [key2]....
求多集合的差集
sunion
命令 sunion [key1] [key2]....
求多集合的并集
应用场景
适用于不能重复且没有顺序的数据结构;例如 可以使用spop进行抽奖活动
sortedset有序集合类型
类型说明
sortedset(zset) 有序集合;元素本身无序且不重复
可按照分数排序(score) 分数可重复
常见命令
zadd
命令 zadd [key] score1 mem1 score2 mem2 score3 mem3
为有序集合添加新元素
zrem
命令 zrem [key] [mem1] [mem2].....
删除有序集合中的指定元素
zcard
命令 zcard [key]
获得集合中的元素个数
zcount
命令 zcount [key] min max
获取集合中的 [min,max] 区间的元素个数(闭区间)
zincrby
命令 zincrby [key] incrment member
在集合指定元素分数上添加整数
zscore
命令 zscore [key] [member]
获取集合指定元素的分值
zrank
命令 zrank [key] [member]
获得集合中member的排名(按分值从小到大)
zrevrank
命令 zrevrank [key] [member]
获得集合中member的排名(按分值从大到小)
zrange
命令 zrange [key] start end
获得集合中指定区间成员,按分数递增排序
zrevrange
命令 zrevrange [ley] start end
获得集合中指定区间成员,按分数递减排序
应用场景
由于可以按照分值排序,所以适用于各种排行榜。比如:点击排行榜、销量排行榜、关注排行榜等。
hash类型(散列表)
类型说明
hash 是一个 string 类型的 field 和 value 的映射表,它提供了字段和字段值的映射。每个 hash 可以存储 2^32 - 1 键值对(40多亿)
常见命令
hset
命令 hset [key] [field] [value]
赋值,不区别新增或修改
hmset
命令 hmset [key] [field1 value1] [field2 value2]
批量赋值
hsetnx
命令 hsetnx [key] [field] [value]
赋值,如果filed存在则不操作
hexists
命令 hexists [key] [field] [value]
查看某个field是否存在
hget
命令 hget [key] [field]
获取一个字段值
hmget
命令 hmget [key] [filed1 field2]
批量获取字段值
hgetall
命令 hgetall [key]
以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表
hdel
命令 hdel [key] [field1 field2]
删除指定字段
hincrby
命令 hincrby [key] [field] [increment]
指定字段自增increment
hlen
命令 hlen [key]
获取字段数量
应用场景
对象的存储 ,表数据的映射
bitmap位图类型
类型说明
bitmap是进行位操作的
通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。
bitmap本身会极大的节省储存空间。
常见命令
setbit
命令setbit [key] [offset] [value]
设置key在offset处的bit值(只能是0或者1)。命令例如: setbit user:1001 20220101 1
getbit
命令 getbit [key] [offset]
获得key在offset处的bit值
bitcount
命令 bitcount [key]
获得key的bit位为1的个数
bitpos
命令 bitpos [key] [value]
返回第一个被设置为bit值的索引值
bitop
bitop and[or/xor/not] destkey [key1 key2]
对多个key 进行逻辑运算后存入destkey 中
应用场景
用户每月签到,用户id为key , 日期作为偏移量 1表示签到
统计活跃用户, 日期为key,用户id为偏移量 1表示活跃
查询用户在线状态, 日期为key,用户id为偏移量 1表示在线
收藏
收藏
0 条评论
下一页