redis数据结构

1、string

string 是 redis 最基本的数据类型,一个 key 对应一个 value,最大能存储 512MB。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。

示例:

127.0.0.1:7000> set key value
-> Redirected to slot [12539] located at 127.0.0.1:7002
OK
127.0.0.1:7002> get key
"value"
127.0.0.1:7002> del key
(integer) 1

2、hash

hash是键值对的形式,类似java中的map。每个 hash 可以存储 232 -1 键值对(40多亿)。

示例:

127.0.0.1:7002> hset hkey field1 value1
(integer) 1
127.0.0.1:7002> hmset hkey field2 value2 field3 value3
OK
127.0.0.1:7002> hkeys hkey
1) "field1"
2) "field2"
3) "field3"
127.0.0.1:7002> hlen hkey
(integer) 3
127.0.0.1:7002> hmget hkey field1 field2
1) "value1"
2) "value2"
127.0.0.1:7002> hdel hkey field1 field2 field3
(integer) 3

3、list

list是有序的集合,类似java中的数组,支持在前后端插入、获取、删除元素。

示例:

127.0.0.1:7002> lpush lkey value1
-> Redirected to slot [9755] located at 127.0.0.1:7001
(integer) 1
127.0.0.1:7001> rpush lkey value2 value3
(integer) 3
127.0.0.1:7001> lrange lkey 0 2
1) "value1"
2) "value2"
3) "value3"
127.0.0.1:7001> llen lkey
(integer) 3
127.0.0.1:7001> lpop lkey
"value1"
127.0.0.1:7001> rpop lkey
"value3"
127.0.0.1:7001> llen lkey
(integer) 1

这里可以利用lrange+lrem实现弹出多个元素,类似循环lpop,但是需要注意的是lrange+lrem需要在外部保证事务的完整性。

4、set

set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。set集合的值具有唯一性。

示例:

127.0.0.1:7001> sadd skey value1 value2 value1
(integer) 2
127.0.0.1:7001> smembers skey
1) "value2"
2) "value1"

5、sorted set(zset)

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

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

zset的成员是唯一的,但分数(score)却可以重复。

示例:

127.0.0.1:7001> zadd zkey 1 value1
(integer) 1
127.0.0.1:7001> zadd zkey 1 value2
(integer) 1
127.0.0.1:7001> zadd zkey 1 value3
(integer) 1
127.0.0.1:7001> zadd zkey 1 value1
(integer) 0
127.0.0.1:7001> zrange zkey 0 3
1) "value1"
2) "value2"
3) "value3"
原文地址:https://www.cnblogs.com/longc-pub/p/11284141.html