Redis的数据类型及使用场景
1.redis 的数据类型
- String 字符串
- Hash 哈希
- List 列表
- Set 集合
- ZSet(Sorted Set) 有序集合
2.使用场景
2.1 String
-
用户token
可以用redis来记录用户token并设置过期时间
小龙测试:0>set 1001 tokenslkdjflksdjflkdsj ex 600 "OK" 小龙测试:0>get 1001 "tokenslkdjflksdjflkdsj" 小龙测试:0>TTL 1001 "592"
-
主键记录
分布式的服务可以通过redis来记录主键的最大值
小龙测试:0>set t_user 1 "OK" 小龙测试:0>incrby t_user 1 "2" 小龙测试:0>incrby t_user 1 "3" 小龙测试:0>get t_user "3"
-
ip访问
可以通过redis记录ip访问次数进行黑名单的限制
小龙测试:0>set 127.0.0.1 1 ex 600 "OK" 小龙测试:0>incrby 127.0.0.1 1 "2" 小龙测试:0>ttl 127.0.0.1 "556" 小龙测试:0>get 127.0.0.1 "2"
2.2 Hash
-
用户信息等对象的存储
小龙测试:0>HSET zhucw name "zhuchunwang" "1" 小龙测试:0>HSET zhucw age "30" "0" 小龙测试:0>HSET zhucw id "100" "1" 小龙测试:0>HGET zhucw "ERR wrong number of arguments for 'hget' command" 小龙测试:0>HGET zhucw id "100" 小龙测试:0>HGETALL zhucw 1) "age" 2) "30" 3) "name" 4) "zhuchunwang" 5) "id" 6) "100"
2.3 List
-
消息队列 & 电商秒杀
# 从左侧往mq中放入元素 小龙测试:0>lpush mq message1 "1" 小龙测试:0>lpush mq message2 "2" # 从右侧往mq中放入消息 小龙测试:0>rpush mq 小龙测试:0>message3 "3" # 查看mq长度 小龙测试:0>llen mq "3" # 查看mq从第一个到最后一个(所有元素) 小龙测试:0>lrange mq 0 -1 1) "message2" 2) "message1" 3) "message3" # 查看mq从第一个到第二个 小龙测试:0>lrange mq 0 1 1) "message2" 2) "message1" 小龙测试:0>lrange mq 1 2 1) "message1" 2) "message3" # 从左边截取一个 小龙测试:0>ltrim mq 0 1 "OK" 小龙测试:0>lrange mq 0 -1 1) "message2" 2) "message1" 小龙测试:0>lpush mq message4 "3" 小龙测试:0>lrange mq 0 -1 1) "message4" 2) "message2" 3) "message1" # 从左边取出一个 小龙测试:0>lpop mq "message4" 小龙测试:0>lrange mq 0 -1 1) "message2" 2) "message1" # 从左边添加两个 message 和 5 小龙测试:0>lpush mq message 5 "4" # 从右边取走一个 小龙测试:0>rpop message null 小龙测试:0>rpop mq "message1" 小龙测试:0>lrange mq 0 -1 1) "5" 2) "message" 3) "message2"
2.4 SET
-
好友集合
# 新增元素 小龙测试:0>SADD zcw aaa "1" 小龙测试:0>SADD zcw bbb "1" 小龙测试:0>SADD zcw ccc "1" 小龙测试:0>SADD zcw ccc "0" # 查看元素 小龙测试:0>smembers zcw 1) "aaa" 2) "ccc" 3) "bbb" 小龙测试:0>SADD xm aaa "1" 小龙测试:0>SADD xm ddd "1" 小龙测试:0>SADD xm ddd "0" 小龙测试:0>smembers xm 1) "ddd" 2) "aaa" # 以zcw为基准,xm中没有的 小龙测试:0>sdiff zcw xm 1) "ccc" 2) "bbb" # zcw 和 xm的交际 小龙测试:0>sinter zcw xm 1) "aaa"
2.5 ZSET
-
电商排序、热搜等
# 新增元素 小龙测试:0>ZADD phone 100 huawei "1" 小龙测试:0>ZADD phone 90 xiaomi "1" 小龙测试:0>ZADD phone 110 apple "1" 小龙测试:0>ZADD phone 80 vivo "1" # 查看元素 从小到大 小龙测试:0>ZRANGE phone 0 10 WITHSCORES 1) "vivo" 2) "80" 3) "xiaomi" 4) "90" 5) "huawei" 6) "100" 7) "apple" 8) "110"小龙测试:0> # 查看元素 分值从大到小 小龙测试:0>Zrevrange phone 0 10 withscores 1) "apple" 2) "110" 3) "huawei" 4) "100" 5) "xiaomi" 6) "90" 7) "vivo" 8) "80"