目录
1、查看redis版本
redis- server - v 或者进入redis后输入 info
2、常见的数据类型(常用五大数据类型)
string (字符类型)
list(列表类型)
hash(散列类型)
set(集合类型)
sorted set(有序集合类型,简称zset)
数据结构如何使用,及相关的应用场景?
除了上述5大数据类型,你还知道其他的redis类型吗?
bitmap(位图)
hyperloglog(统计)
GEO ( geospatial-地理空间索引半径查询)
stream
3、实际应用中的注意事项
命令不区分大小写,key是区分大小写
进入redis后,需查找操作命令时, 可以使用 help@类型名词 例如 help @string
4、string 相关
常用命令
设值 set key value 取值 get key
同时设置/获取多个键值?
设置多个值 mset k1 v1 k2 v2
获取多个值 mget k1 k2
备注:m的意思其实就是more 可以方便记忆
数值增减?
递增数字 incr key
增加指定的整数 incrby key increment
递减数值 decr key
减少指定的整数 decrby key decrement
获取字符串长度?
strlen key
分布式锁?
setnx key value
set key value [EX seconds] [PX milliseconds] [NX|XX]
EX: key在多少秒之后过期
PX: key 在多少毫秒之后过期
NX: 当key 不存在的时候,才创建key,效果等同于setnx
XX:当key存在的时候,覆盖key
具体的应用场景介绍?
商品编号、订单编号采用incr 命令生成,类似平时 点 "赞" 点 "踩"
是否喜欢的文章
5、hash 相关
对应的java的数据结构类型?
Java中对应的结构为 Map<String,Map<Object,Object>>
常用的命令?
一次设置一个字段值 hset key field value
一次获取一个字段值 hget key field
一次设置多个字段值 hmset key field value [field value .....]
一次获取多个字段值 hmget key field [field ...]
获取所有字段值 hgetall key
获取某个key内的全部数量 hlen
删除一个key hdel
应用场景?
简单版的订餐、购物车场景
6、list相关
常用的命令?
向列表左边添加元素 lpush key value [value ...]
向列表右边添加元素 rpush key value[ value ...]
查看列表 lrange key start stop
获取列表中元素的个数 llen key
应用场景?
微信文章订阅公众号
两个文章发布, 分别为1 和2 ;
用户关注了这两位作者,只要他们再发布文章,就会放入到该用户的List;
lpush likearticle:用户id 1 2
查看该用户自己订阅号的全部文章,类似分页,下面0-10就是一次显示10条
lrange likearticle: 用户 0 10
就是用户和自己关注的作者发布的文章进行了绑定。
7、set相关
常用的命令?
添加元素 sadd key member
删除元素 srem key member
获取集合中的所有元素 smembers key
判断元素是否存在集合中 sismember key member
获取集合中的元素个数 scard key
从集合中随机弹出一个元素,元素不删除 srandmember key [数字]
从集合中随机弹出一个元素 ,出一个删一个 spop key [数字]
集合运算 集合的差集运算 A-B 属于A但不属于B的元素构成的集合 sdiff key [key...]
集合的交集运算 A∩B 属于A 同时也属于B的共同拥有的元素构成的集合 sinter key [key ...]
集合的并集运算 A∪B 属于A或者属于B的元素合并后的集合 sunion key [key ...]
应用场景?
微信抽奖小程序
抽奖时,使用spop 或者srandmember 方法,随机抽取几个中奖的元素,抽一个删一个 或者抽一个不进行删除
例如 : 1、用户点击立即参与按钮 sadd key 用户id
2、 显示有多少人参与 scard key
3、 抽奖从set集合中任选n个人 srandmember key 2 随机抽奖2个人,元素不会删除 ; spop key 3 随机抽奖3个人 ,元素会删除
微信朋友圈点赞
例如: 1、用户点赞 sadd key 点赞用户id
2、用户取消点赞 srem key 用户id
3、显示所有点赞的用户数 smembers key
4、显示多少人点赞 scard key
微博好友关注社交关系
使用集合运算,共同关注的好友;我关注的人也关注了他
QQ内推可能认识的人
有几个共同好友;可能认识的人
8、Zset相关
常用的命令?
向有序集合中加入一个元素和该元素的分数
添加元素 zadd key score member [score member ...]
按照元素分数从小到大的顺序返回索引从start到stop 之间的所有元素 zrange key start stop [withscores]
获取元素的分数 zscode key member
删除元素 zrem key member [member ...]
获取指定分数范围的元素 zrangebyscore key min max [ withscore ][limit offset count]
增加某个元素的分数 zincrby key increment member
获取集合中元素的数量 zcard key
获取指定分数范围内的元素个数 zcount key min max
应用场景?
根据商品销售对商品进行排序显示
1、商品编号001 的销量是9 ,商品编号002 的销量是15 >>>>>>> zadd 商品排行 9 001 10 002
2、 有客户再买入2件商品001 >>>>>>> zincrby 商品排行 2 002
3、 求商品销量前10名 >>>>>>> zcount 商品排行 0 9 withscores
抖音热搜榜
1、点击视频 >>>>>>> zincrby hotvcr:20210507 1 电影1 ; zincrby hotvcr:20210507 1 电影1 2 电影2
2、 展示当日前10名 >>>>>>> zrevrange hotvcr:20210507 0 9 withscores