Redis_03_Redis散列和有序集合浅解析

1、前情提要

在上一篇博客中简单分析和运用了Redis的两种数据结构列表和集合,那这一篇博客就谈谈剩下的散列和有序集合两种吧

2、初识Redis散列

2.1、理论

散列又是啥呢?我不知道为什么很喜欢用python中的一些数据结构类比Redis中的数据结构,因为我发现它们真的超像,Redis中的散列,我觉得和python中的字典数据结构是差不多的,Redis中的散列是这样的,有一个key可以让我们找到这个散列,而这个散列中又有许多二级(子)key,可以让我们找到这些二级(子)key所对应的value,但是这些二级(子)key及其所对应的value,都是这一个散列的内容;我们把这种类比到python中的字典结构上,字典有一个变量名,对应了散列有一个key让我们找到这个散列一样让我们找到这个字典,散列中的一系列二级key及其对应的value,就好像字典中的key及其对应的value。

Redis中的散列是可以存储多个键值对之间的映射,和字符串一样,散列存储的值既可以是字符串又可以是数字值,并且用户同样可以对散列存储的数字值执行自增或自减操作。下表列举了散列常用的一些命令:

命令 功能 返回值
HSET 在散列里面关联起给定的键值对 如果要添加的key在散列中存在,则返回0,如果不存在,则返回1
HGET 获取指定的散列键的对应的value 返回对应的value
HGETALL 获取散列中所有的键值对 返回所有的key及其value
HDEL 如果给定键存在于散列中,那么删除这个键及其对应的value 如果对应的key存在于散列中,则删除并返回1,如果不存在于散列中,返回0

2.2、实践

a、使用HSET命令在key为myHash的散列中建立“one-key”,“one-value”,“two-key”,“two-value”,“three-key”,“three-value”,“four-key”,“four-value”,“five-key”,“five-value”,“six-key”,“six-value”的键值对映射,操作及结果如下图所示:

Redis_03_Redis散列和有序集合浅解析

b、使用HGETALL命令查看key为myHash的散列中的所有key-value的映射,操作及结果如下图所示:

Redis_03_Redis散列和有序集合浅解析

c、使用HGET命令得到散列中key为“four-key”对应的value,操作及结果如下图所示:

Redis_03_Redis散列和有序集合浅解析

d、使用HDEL命令删除散列中key为“three-key”的键及其对应的value,然后使用HGETALL命令查看散列中所有的key-value映射,操作及结果如下图所示:

Redis_03_Redis散列和有序集合浅解析

3、初识有序集合

3.1、理论

有序集合和散列一样,都是用于存储键值对的,不过,有序集合中的键被称为成员,每个成员都是各不相同的,有序集合的值称为分值,分值必须是浮点数。有序集合时Redis中唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排列顺序来访问元素的结构。下表列举了一些有序集合常用的命令:

命令 功能 返回值
ZADD 将一个给定分值的成员添加到有序集合里面 返回添加元素后集合中所有的元素个数
ZRANGE 根据元素在有序排列中所处的位置,从有序集合里面获取多个元素  
ZRANGEBYSCORE 获取有序集合在给定分值范围内的所有元素  
ZREM 如果给你个成员存在于这个集合中,那么就移除这个成员  

 

3.2、实践

a、使用ZADD命令将“one”,“two”,“three”,“four”,“five”,“six”六个元素添加到key为myAset的有序集合中,并设置分值为:100,200,300,400,500,600,操作及结果如下图所示:

Redis_03_Redis散列和有序集合浅解析

b、使用ZRANGR命令(参数用法和集合中的LRANGE命令参数大致用法一致,第三个“withscores”是指显示元素分值)查看集合中的所有元素,操作及结果如下图所示:

Redis_03_Redis散列和有序集合浅解析

c、使用ZRANGEBYSCORE命令查看分值在200-500之间的元素,操作及结果如下图所示:

Redis_03_Redis散列和有序集合浅解析

d、使用ZREM命令移除“three”这个元素,操作及结果如下图所示:

Redis_03_Redis散列和有序集合浅解析

4、总结

从第一篇博客到这一篇博客,简单研究了Redis的五种数据结构,对这些数据结构是怎么存储数据的有了一个清晰的了解,同时也简单的学习了五种数据结构的插入、删除、查询等操作,下一篇博客我想先不深入了解这五种数据结构,而是讲诉如何使用python连接Redis并对其进行简单的操作;这一篇博客就到这里了。