1.字符串(String)
1.1用法
127.0.0.1:6379> set name zhangsan // 1.设置key为name的值为zhangsan
OK
127.0.0.1:6379> get name // 2.获取key为name的值
"zhangsan"
127.0.0.1:6379> del name // 3.删除key为name的值
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> exists name // 4.判断key为name是否存在
(integer) 0
127.0.0.1:6379> set count 1 // 5.设置key为count的值为1
OK
127.0.0.1:6379> type count // 6.判断类型
string
127.0.0.1:6379> ttl count // 7.查看生存时间,-1则代表未设置生存时间
(integer) -1
127.0.0.1:6379> decrby count 1 // 8.减1
(integer) 0
127.0.0.1:6379> get count
"0"
127.0.0.1:6379> incrby count 1 // 9.加1
(integer) 1
127.0.0.1:6379> get count
"1"
127.0.0.1:6379> decr count // 10.自减
(integer) 0
127.0.0.1:6379> get count
"0"
127.0.0.1:6379> incr count // 11.自增
(integer) 1
127.0.0.1:6379> get count
"1"
127.0.0.1:6379> mget name count // 12.获取多个key
1) (nil)
2) "1"
127.0.0.1:6379> expire count 10 // 13.设置过期时间
(integer) 1
127.0.0.1:6379> get count
"1"
127.0.0.1:6379> get count
(nil)
1.2场景
- 计数器,网站访问人数、文章访问量等
- 存放登录的验证码
- 共享用户session
- 缓存
2.列表(List)
有序并且可以在头节点或者尾节点进行删除和插入操作,支持存储重复元素并且可以通过下标取值
2.1用法
127.0.0.1:6379> lpush list1 v1 // 1.往头插入元素
(integer) 1
127.0.0.1:6379> lpush list1 v2 // 2.往头插入元素
(integer) 2
127.0.0.1:6379> llen list1 // 3.获取列表的长度
(integer) 2
127.0.0.1:6379> lpop list1 // 4.从头节点移出元素
"v2"
127.0.0.1:6379> lpop list1
"v1"
127.0.0.1:6379> lpop list1
(nil)
127.0.0.1:6379> lpush list1 v1
(integer) 1
127.0.0.1:6379> lpush list1 v2
(integer) 2
127.0.0.1:6379> llen list1
(integer) 2
127.0.0.1:6379> rpush list1 v0 // 5.从尾插入
(integer) 3
127.0.0.1:6379> lrange list1 0 -1 // 6.获取指定下标元素
1) "v2"
2) "v1"
3) "v0"
2.2场景
- 最长见的场景就是消息队列,通过头插尾删实现队列功能
3.集合(Set)
不允许存放重复的元素,并且存放的元素位置是无序的,可以进行差集、交集、并集等操作
3.1用法
127.0.0.1:6379> sadd set a b c d // 1.存入多个值
(integer) 4
127.0.0.1:6379> smembers set // 2.全部遍历
1) "c"
2) "a"
3) "d"
4) "b"
127.0.0.1:6379> sismember set a // 3.判断是否存在
(integer) 1
127.0.0.1:6379> sismember set f
(integer) 0
127.0.0.1:6379> sadd set a
(integer) 0
127.0.0.1:6379> sadd set f
(integer) 1
127.0.0.1:6379> scard set // 4.返回集合长度
(integer) 5
127.0.0.1:6379> srem set m // 5.移除元素
(integer) 0
127.0.0.1:6379> srem set f
(integer) 1
127.0.0.1:6379> sadd set1 a b c
(integer) 3
127.0.0.1:6379> sdiff set set1 // 6.返回差集
1) "d"
127.0.0.1:6379> sinter set set1 // 7.返回交集
1) "c"
2) "a"
3) "b"
127.0.0.1:6379> sunion set set1 // 8.返回并集
1) "b"
2) "d"
3) "a"
4) "c"
3.2场景
- 标签、共同喜好等用户信息归类到同一个集合
- 共同好友,因为集合可以进行交集、并集和差集的操作
4.有序集合(Sorted Set)
支持有序存储(给每个元素设置了一个分数作为排序的依据),但是不支持存储重复元素
4.1用法
127.0.0.1:6379> zadd rank 1 beijing // 1.存储元素
(integer) 1
127.0.0.1:6379> zadd rank 1 shanghai
(integer) 1
127.0.0.1:6379> zadd rank 2 shenzhen
(integer) 1
127.0.0.1:6379> zadd rank 3 guangzhou
(integer) 1
127.0.0.1:6379> zrange rank 0 -1 // 2.遍历集合
1) "beijing"
2) "shanghai"
3) "shenzhen"
4) "guangzhou"
127.0.0.1:6379> zadd rank 0 jinan
(integer) 1
127.0.0.1:6379> zrange rank 0 -1
1) "jinan"
2) "beijing"
3) "shanghai"
4) "shenzhen"
5) "guangzhou"
127.0.0.1:6379> zrem rank jinan // 3.移除元素
(integer) 1
127.0.0.1:6379> zcard rank // 4.获取集合长度
(integer) 4
127.0.0.1:6379> zrange rank 0 3 withscores // 5.获取元素分数在0到3的集合元素
1) "beijing"
2) "1"
3) "shanghai"
4) "1"
5) "shenzhen"
6) "2"
7) "guangzhou"
8) "3"
127.0.0.1:6379> zrevrange rank 0 3 withscores // 6.获取元素分数在0到3的集合元素并且降序
1) "guangzhou"
2) "3"
3) "shenzhen"
4) "2"
5) "shanghai"
6) "1"
7) "beijing"
8) "1"
4.2场景
- 排行榜
5.哈希(Hash)
键值对的存储
5.1用法
127.0.0.1:6379> hset user name zhangsan // 1.存值
(integer) 1
127.0.0.1:6379> hset user age 18
(integer) 1
127.0.0.1:6379> hget user name // 2.取值
"zhangsan"
127.0.0.1:6379> hmget user name age // 3.取hash多个key
1) "zhangsan"
2) "18"
127.0.0.1:6379> hgetall user // 4.获取hash全部key和value
1) "name"
2) "zhangsan"
3) "age"
4) "18"
127.0.0.1:6379> hlen user // 5.获取长度
(integer) 2
127.0.0.1:6379> hexists user name // 6.判断属性是否存在
(integer) 1
127.0.0.1:6379> hkeys user // 7.获取全部key
1) "name"
2) "age"
127.0.0.1:6379> hvals user // 8.获取全部value
1) "zhangsan"
2) "18"
127.0.0.1:6379> hset user name lisi // 9.一样的key会覆盖原来的值
(integer) 0
127.0.0.1:6379> hvals user
1) "lisi"
2) "18"
5.2场景
- 适合存储对象信息,用户信息(age,name,sex),文章(标题,内容,作者,时间)