redis 常见操作

时间:2020-05-06

String: 字符串

127.0.0.1:6379> set name wyzda
OK
127.0.0.1:6379> get name
"wyzda"
127.0.0.1:6379> set name 李四
OK
127.0.0.1:6379> get name
"\xe6\x9d\x8e\xe5

后面相同的key会覆盖前面key的内容

Hash: 散列

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。

127.0.0.1:6379> hmset student name zs age 20 sex 1
OK
127.0.0.1:6379> hgetall student
1) "name"
2) "zs"
3) "age"
4) "20"
5) "sex"
6) "1"
127.0.0.1:6379> hmset student name zs2 age 202 sex 2
OK
127.0.0.1:6379> hgetall student
1) "name"
2) "zs2"
3) "age"
4) "202"
5) "sex"
6) "2"
127.0.0.1:6379> 

后面相同的key会覆盖前面key的内容

List: 列表

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

127.0.0.1:6379> lpush names zs
(integer) 1
127.0.0.1:6379> lpush names ls
(integer) 2
127.0.0.1:6379> lpush names ww
(integer) 3
127.0.0.1:6379> lrange names 0 3
1) "ww"
2) "ls"
3) "zs"
127.0.0.1:6379> 

Set: 集合

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。

127.0.0.1:6379> sadd titles 111
(integer) 1
127.0.0.1:6379> sadd titles 222
(integer) 1
127.0.0.1:6379> sadd titles 222
(integer) 0
127.0.0.1:6379> sadd titles 333
(integer) 1
127.0.0.1:6379> smembers titles
1) "111"
2) "222"
3) "333"
127.0.0.1:6379> 

Sorted Set: 有序集合

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。

127.0.0.1:6379> zadd goods 10  t1
(integer) 1
127.0.0.1:6379> zadd goods 20  t2
(integer) 1
127.0.0.1:6379> zadd goods 20  t2
(integer) 0
127.0.0.1:6379> zadd goods 30  t3
(integer) 1
127.0.0.1:6379> zrange goods 0 3
1) "t1"
2) "t2"
3) "t3"
127.0.0.1:6379> zrange goods 0 4
1) "t1"
2) "t2"
3) "t3"
127.0.0.1:6379> zrange goods 0 4 withscores
1) "t1"
2) "10"
3) "t2"
4) "20"
5) "t3"
6) "30"
127.0.0.1:6379>