目录
一、Redis
1、Redis数据类型的应用场景
1.1、string
1.2、list
1.3、hash
1.4、set
1.5、zset(sorted set)
一、Redis
Redis命令不区分大小写的,而key是区分大小写的
Redis查看版本
方式1:
G:\Redis-x64-6.0.8>redis-server -v
Redis server v=6.0.8 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=a4f7a6e86f2d60b3方式2:
127.0.0.1:6379> info
# Server
redis_version:6.0.8
redis_git_sha1:00000000
redis_git_dirty:0
.....
Redis官网
Redis中文网站
1、Redis数据类型的应用场景
面试题:
1、redis五种传统的数据类型你如何使用的?用在哪些场景?2、除了上述5大数据类型,你还知道其他redis的类型吗?
bitmap(位图)
HyperLogLog(统计)
GEO(地理)
Stream
1.1、string
1、最常用
set key value
get key2、同时设置/获取多个键值
mset key value key value ...
mget key key1 ....3、数值增减
递增数字
incr key
增加指定整数
incrby key increment
递减数值
decr key
减少指定的整数
decrby key decrement4、获取字符串的长度
strlen key5、分布式锁
setnx key value
set key value [EX seconds] [PX milliseconds] [NX|XX]
EX:key在多少秒之后过期
PX:key在多少毫秒之后过期
NX:当key不存在的时候,才创建key,效果等同于setnx
XX:当key存在的时候,覆盖key
应用场景:
1、商品编号、订单号采用INCR命令生成
2、是否喜欢的文章(点赞/踩一踩) 统计喜欢/不喜欢谋篇文章
阅读数,只要点击了rest地址,直接可以使用incr key命令增加一个数字1,完成记录数字
1.2、list
1、向列表左边添加元素
LPUSH key value [value...]
2、向列表右边添加元素
RPUSH key value [value...]
3、查看列表
LRANGE key start stop
4、获取列表中元素的个数
LLEN key
应用场景:
1、微信文章订阅公众号-->订阅号消息
用户uid1024关注公众号d11 d22
lpush follow:uid1024 d11 d22
d11 d22发布新文章显示,相当于查看, 0 -1 查看所有
lrange follow:uid1024 0 -1
1.3、hash
redis hash 对应====>java中的结构 Map<String,Map<k,v>>
1、一次设置一个字段值
HSET key field value
2、一次获取一个字段值
HGET key field
3、一次设置多个字段值
HMSET key field value [field value...]
4、一次获取多个字段值
HMGET key field [field ...]
5、获取所有字段值
HGETALL KEY
6、获取某个key内的全部数量
hlen key
7、删除一个key
hdel key
应用场景:
1、购物车,全选商品,增加商品数量.....
新增商品-->hset shopcar:uid1024 334488 1
新增商品-->hset shopcar:uid1024 334477 1
增加商品数量-->hincrby shopcar:uid1024 334477 1
商品总数-->hlen shopcar:uid1024
全部选择-->hgsetall shopcar:uid1024
1.4、set
1、添加元素
SADD key member [member...]
2、删除元素
SREM key member [member...]
3、获取集合中的所有元素
SMEMBERS key
4、判断元素是否在集合中
SISMEMBERS key member
5、获取集合中的元素个数
SCARD key
6、从集合中随机弹出一个元素,元素不删除 [数字]抽出几个
SRANDMEMBER key[数字]
7、从集合中随机弹出一个元素,出一个删除一个 [数字]抽出几个
SPOP key[数字]
8、集合运算
8.1、集合的差集运算A - B 属于A但不属于B的元素构成的集合
SDIFF key[key ...]
8.2、集合的交集运算A ∩ B 属于A同时也属于B的元素构成的集合
SINTER key[key ...]
8.3、集合的并集运算A ∪ B 属于A或者属于B的元素构成的集合
SUNION key[key ...]
应用场景:
1、微信抽奖小程序
1、用户ID,立即参与按钮
sadd key 用户id
2、显示有多少人参与了
SCARD key
3、从集合中随机弹出一个元素,元素不删除 [数字]抽出几个
SRANDMEMBER key[数字]
4、从集合中随机弹出一个元素,出一个删除一个 [数字]抽出几个
SPOP key[数字]
2、微信朋友圈点赞
1、用户ID,新增点赞按钮
sadd key 点赞用户id 点赞用户id2 点赞用户id3 ...
2、取消点赞
srem key 点赞用户id 点赞用户id2 点赞用户id3 ...
3、展现所有点赞过的用户
SMEMBERS key
4、点赞用户数统计,就是常见的点赞红色数字
scard key
5、判断某个朋友是否对楼主点赞过
SISMEMBERS key 点赞用户id
3、微博好友关注社交关系
1、共同关注的人,取交集
SINTER key1 key2
4、QQ内推可能认识的人
1、取差集,我认识的但你不认识的,差集
SDIFF key1 key2...
1.5、zset(sorted set)
1、向有序集合中加入一个元素和该元素的分数,添加元素
ZADD key score member [score member...]
2、按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素
ZRANGE key start stop [WISHSCORES]
3、获取元素的分数
ZSCORE key member
4、删除元素
ZREM key member [member ...]
5、获取指定分数范围的元素
ZRANGEBYSCORE key min max [WISHSCORES][LIMIT offset count]
6、增加某个元素的分数
ZINCRBY key increment member
7、获取集合中元素的数量
ZCARD key
8、获得指定分数范围内的元素个数
ZCOUNT key min max
9、按照排名范围删除元素
ZREMRANGEBYRANK key start stop
10、获取元素的排名从小到大 ZRANK key member从大到小 ZREVRANK key member
应用场景:
1、根据商品销售对商品进行排序显示
定义商品销售排行榜(sorted set 集合),key为goods:sellsort,分数为商品销售数量
1、商品id1001的销售数量是9,商品id1002的销售数量是15
zadd goods:sellsort 9 1001 15 1002
2、有一个客户又买了2件1001的商品
zincrby goods:sellsort 2 1001
3、求商品销售前10名
zrange goods:sellsort 0 10 withscores
2、抖音热搜
1、点击视频
zincrby hotvcr:20231024 1 孙悟空三打白骨精
zincrby hotvcr:20231024 15 孙悟空三打白骨精 4 东游记
2、展示当前排行前10条
zrevrange hotvcr:20231024 0 9 withscores
SSM--->SSR
Redis缓存数据库(一)
一个程序员最重要的能力是:写出高质量的代码!!
有道无术,术尚可求也,有术无道,止于术。
无论你是年轻还是年长,所有程序员都需要记住:时刻努力学习新技术,否则就会被时代抛弃!