数据结构
常用基本命令
-
keys * 查看当前库所有的key
-
exists key 判断某个key是否存在
-
type key 查看key的类型
-
del key 删除指定的key数据
-
unlink key :非阻塞删除,仅仅将keys从key元数据删除,真正的删除会异步操作
6.ttl key 查看key多少秒过期,-1用不过期,-2表示已过期
7. expire key 秒钟 为给定的key设置过期时间
8 . move key dbindex[0-15] 将当前数据库的key移动到指定的数据库db中
并且配合select 选择指定的库
9.dbsize : 当前数据库key的数量
flushdb : 清空当前库
flushall : 通杀全部库
字符串
String是Redis基本数据类型,一个key包含一个value,类似于map结构。
- set/get/mset/mget/msetnx/getrange/setrang/incr/strlen/append/setnx/setex/
127.0.0.1:6379[1]> set k1 v1 ex 100
OK
127.0.0.1:6379[1]> ttl k1
(integer) 98
127.0.0.1:6379[1]> get k1
"v1"
127.0.0.1:6379[1]> mset k2 v2 k3 v3
OK
127.0.0.1:6379[1]> mget k2 k3
1) "v2"
2) "v3"
127.0.0.1:6379[1]> GETRANGE k2
(error) ERR wrong number of arguments for 'getrange' command
127.0.0.1:6379[1]> GETRANGE k2 0 1
"v2"
127.0.0.1:6379[1]> GETRANGE k2 0 2
"v2"
127.0.0.1:6379[1]> set k4 1
OK
127.0.0.1:6379[1]> INCR k4
(integer) 2
127.0.0.1:6379[1]> INCR k4
(integer) 3
127.0.0.1:6379[1]> DECR k4
(integer) 2
127.0.0.1:6379[1]> strlen k4
(integer) 1
127.0.0.1:6379[1]> strlen k1
(integer) 0
127.0.0.1:6379[1]> strlen k2
(integer) 2
127.0.0.1:6379[1]> setnx k1 v1
(integer) 1
127.0.0.1:6379[1]> setnx k2 v1
(integer) 0
127.0.0.1:6379[1]>
应用场景:
分布式锁、抖音视频点赞统计、微信文章浏览量等都可以通过字符串进行统计。
列表
简单的字符串列表,可以在列表头部或者尾部插入数据,本质是双端列表。
常用命令: lpush/rpush/lrange/lpop/rpop/llen/
127.0.0.1:6379[1]> LPUSH list1 1 2 3 4
(integer) 4
127.0.0.1:6379[1]> get list1
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379[1]> LRANGE list1 0 4
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379[1]> lpush list1 5
(integer) 5
127.0.0.1:6379[1]> LRANGE list1 0 5
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379[1]> RPUSH list1 6
(integer) 6
127.0.0.1:6379[1]> LRANGE list1 0 6
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "6"
127.0.0.1:6379[1]> LLEN list1
(integer) 6
应用场景
可以使用作为一个异步队列左边push,右边pop。
微信文章公众号,比如订阅了三个公众号,公众号A发布了11,B发布了22,C发布了33,那么lpush,顺序就是33、22、11,推送的时候可以按照顺序进行推送。
哈希
数据结构,key是一个string类型的field和value值。
常用命令:hset/hget/hmset/hmget/hgetall/hdel/hlen/hexists key
127.0.0.1:6379[1]> hset hash1 name qxlx age 18
(integer) 2
127.0.0.1:6379[1]> hget hash1 name
"qxlx"
127.0.0.1:6379[1]> hget hash1 age
"18"
127.0.0.1:6379[1]> hgetall hash1
1) "name"
2) "qxlx"
3) "age"
4) "18"
127.0.0.1:6379[1]> hlen hash1
(integer) 2
127.0.0.1:6379[1]>
集合
无序集合,数据唯一。
sadd key member/smembers key/sismember key number/srem key /scard
127.0.0.1:6379[1]> sadd set1 1 2 3 4 5
(integer) 5
127.0.0.1:6379[1]> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379[1]> SISMEMBER set1 1
(integer) 1
127.0.0.1:6379[1]> SISMEMBER set1 0
(integer) 0
127.0.0.1:6379[1]> srem set1 1
(integer) 1
127.0.0.1:6379[1]> SMEMBERS set1
1) "2"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379[1]> scard set1
(integer) 4
127.0.0.1:6379[1]> sadd set2 3 4 5
(integer) 3
127.0.0.1:6379[1]> SDIFF set1 set2
1) "2"
127.0.0.1:6379[1]> SMEMBERS set1
1) "2"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379[1]> SMEMBERS set2
1) "3"
2) "4"
3) "5"
127.0.0.1:6379[1]> SUNION set1 set2
1) "2"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379[1]> SINTER set1 set2
1) "3"
2) "4"
3) "5"
127.0.0.1:6379[1]>
应用场景:朋友圈点赞
有序集合
zset和set的区别是加了一个分数值,可以保证有序。
/zadd/zrange/zrevrange/zrangebyscore/zscore/