大部分同学应该都知道redis数据库是以 key-value 形式存储数据的,本文将介绍redis数据库的5种数据结构,分别为
string[字符串] list[列表] set[集合] hash[散列] 及 zset[有序集合]
。
1. string
字符串拥有一些和其它键值存储相似的命令,GET SET DEL 。本文将使用 redis-cli 操作 redis,并将 hello - world 存入redis中
如上所示:使用set命令时,设置k-v成功后,客户端返回OK,删除成功后将返回被成功删除的值的数量,get获取不到对应键值将返回nil
2. list
一个列表结构可以有序的存储多个字符串,下图展示了一个键为 list-k ,值为有序的三个字符串的列表
列表操作的命令有
1. RPUSH 将给定值推入列表的右端
2. LPUSH 将给定值推入列表的左端
3. LPOP 从列表的左端弹出元素
4. RPOP 从列表的右端弹出元素
5. LINDEX 获取列表在给定位置上的一个元素
6. LRANGE 获取列表在给定范围的元素
lrange list-k 0 -1 [-1表示范围结束索引,可以去除列表包含的所有元素]
……
下图为使用redis-cli操作redis的列表
3.set
set 与 list 区别:无序 + 无重复字符串
由于set数据类型使用无序方式存储元素,所以不能像list一样左右push元素,操作命令有:
SADD 将给定元素添加到集合
SMEMBERS 返回集合包含的所有元素
SISMEMBER 检查给定元素是否存在于集合中
SREM 如果给定元素存在于集合中,删除
……
下图为使用redis-cli操作redis的列表
4.hash
redis的hash数据结构可以存储多个键值对之间的映射 field - value
hash的操作命令有:
HSET 在set中关联给定键值对
HGET 获取指定键的值
HGETALL 获取set中所有键值对
HDEL 若给定键存在于hash中,删除这个键
下图为使用redis-cli操作redis的列表
5.zset
redis中的zset是有序集合,与hash一样,都用于存储键值对,member - score
有序集合的值被称为分值(score),必须为浮点数,有序集合是redis里唯一一个既可以根据成员访问元素又可以根据分值以及分值的排列顺序来访问的数据结构。
zset的操作命令有
ZADD key score member 将一个带有给定分值的成员添加到有序集合中
ZRANGE 根据元素在有序排列中所处的位置,从有序集合中获取多个元素
ZRANGEBYSCORE 获取有序集合在给定分值范围内的所有元素
ZREM 如果给定元素存在,删除
下图为使用redis-cli操作redis的有序集合