字符串常用操作
set key value //存入字符串键值对
mset key value [key value ...] //批量存储字符串键值对
setnx key value //存入一个不存在的字符串键值对
get key //获取一个字符串的建值
mget key [key ...] //批量获取字符串键值
del key [key ...] //删除一个键
expire key seconds //设置一个键的过期时间(秒)
原子加减
incr key //将key中存储的数字值加1
decr key //将key中存储的数字值减一
incrby key increment //将key所存储的值加上 increment
decrby key decrement //将key所存储的值减去 decrement
单值缓存
set key value
get key
对象存储
set user value(json数据)
mset user1 value1 user2 value2
mget user1 user2
分布式锁
setnx product:10001 true //返回1代表获取锁成功
setnx product:10001 true //返回0代表获取锁失败
…执行业务操作
del product:10001 //执行完业务释放锁
set product:10001 true ex 10 nx //防止程序意外终止导致死锁
计数器
incr key
get key
Web 集群 session 共享
spring session +redis 实现session共享
分布式系统全局序列号
incrby orderid 1000 //可以考虑 redis批量生产序列号提升性能
hash常用操作
hset key field value //存储一个hash表key的键值
hsetnx key field value //存储一个不存在的hash表key的键值
hmset key field value [field value] //在一个hash表key中存储多个键值对
hget key field //获取hash表key对应的field键值
hmget key field [field ...] //批量获取hash表key对应的field键值
hdel key value //删除hash表key中field键值
hlen key //返回hash表中field的数量
hgetAll key //返回hash表中所有键值
电商购物车
1、以用户id为key
2、商品id为field
3、商品数量为value
list常用操作
lpush key value [value …] //将一个或多个值value插入到key列表的表头(最左边)
rpush key value [value …] //将一个或多个值value插入到key列表的表尾(最右边)
lpop key //移除并返回key列表的头元素
rpop key //移除并返回key列表的尾元素
lrange key start stop //返回列表key中指定区域内的元素,区间以start 和stop 指定
blpop key [key …] timeout //从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout为0,一直阻塞等待
brpop key [key …] timeout //从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout为0,一直阻塞等待。
常用数据结构
Stack=lpush+lpop
Queue=lpush+rpop
Blocking MQ=lpush+brpop
微博消息和微信公众号消息
王小明关注了张三,李四等大V
1、张三发微博,消息id为10001
lpush msg:{张三id} 10001
2、李四发微博,消息id为10002
lpush msg:{李四id} 10002
3、查看最新关注的微博消息
lrange msg:{张三id} 0 4
set 常用操作
sadd key member [member …]
srem key member [member …]
smembers key //获取集合key的所有元素
scard key //获取集合key的元素个数
sismember key member //判断member元素是否存在与集合key中
srandmember key [count] //从集合key中选出count个元素,元素不从key中删除
spop key [count] //从集合中选出count个元素,元素从key中删除
set 运算操作
sinter key [key] //交集运算
sinterstore destination key [key …] //将交集结果存入新集合destination中
sunion key [key] //并集运算
sunionstore destination key [key …] //将并集结果存入新集合destination中
sdiff key [key] 差集运算
sdiffstore destination key [key …] //将差集结果存入新集合destination中
微信小程序抽奖
1、点击参与抽奖加入集合
sadd key userid
2、查看参与抽奖的所有人员
smembers key
3、抽取 count名中奖者
srandmember key [count] //不会删除中奖者元素
spop key [count] //会删除中奖者元素
127.0.0.1:6379> zadd zsetKey 20 zs 50 ls 80 xy //往有序集合key中加入带分值元素
(integer) 3
127.0.0.1:6379> zrem zsetKey zs ls //从有序集合key中删除元素
(integer) 2
127.0.0.1:6379> zscore zsetKey xy //返回有序集合key中元素 zsetKey的分值
"80"
127.0.0.1:6379> zincrby zsetKey 50 xy //为有序集合 zsetKey中元素xy 的分值加50
"130"
127.0.0.1:6379> zcard zsetKey //返回有序集合zsetKey的元素个数
(integer) 1
127.0.0.1:6379> zrange zsetKey 0 5 //正序获取有序集合zsetKey从start 到stop的下标元素
1) "xy"
127.0.0.1:6379> zrevrange zsetKey 0 5//倒序获取有序集合zsetKey从start 到stop的下标元素
2) "xy"
127.0.0.1:6379>
```
Zset集合操作实现排行榜
1、点击新闻 数量加一
zincrby hotNew:20220705 1 标题名
2、展示当日排行榜前十
zrevrange hotNews:20220705 0 9
3、七日搜索榜单计算
zunionstore hotNews:20220705-20220712 7 hotNews:20220706 hotNews:20220707 hotNews:20220708 hotNews:20220709 hotNews:202207010 hotNews:202207011 hotNews:202207012
4、展示七日排行前十
zrevrange hotNews:20220705-20220712 0 9
tNews:20220705 0 9
3、七日搜索榜单计算
zunionstore hotNews:20220705-20220712 7 hotNews:20220706 hotNews:20220707 hotNews:20220708 hotNews:20220709 hotNews:202207010 hotNews:202207011 hotNews:202207012
4、展示七日排行前十
zrevrange hotNews:20220705-20220712 0 9