Redis系列(三)Redis数据结构

  今天中午吃完饭去对门的奥林匹克森林公园转了一圈,花开的特别漂亮,突然感觉redis多彩多姿的数据结构就像这些花儿一样。

  Redis是一个操作数据结构的语言工具,主要包括5种基本数据类型,咱们系列一已经简单说过:stringhashlistsetzset。在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的:

             

 

(一)string

string是最简单的类型,可以理解成与 Memcached 是一模一样的类型,一个 key 对应一个value,它支持的操作与 Memcached的操作类似,但它的功能更丰富:string类型是二进制安全的,意思是 value其实不仅是String,也可以是数字,它可以包含任何数据,比如 jpg 图片或者序列化的对象。

常用命令:set,setnx,setex,setrange,mset,msetnx,

get,getset,getrange,mget,

decr,decrby,incr,incrby,

append,strlen

  解释set name xingxingkey就是name,对应的value就是xingxing。在Rredis中同一个键只允许有一个,不允许重复。有set赋值就应该有get取值,而且可以批量操作mset;也可以重复检查setnx(not exit);也可以设置有效期setex,单位是秒,如果不设置有效期,则永久有效。


(二)hash

  hash 是一个string类型的field和value的映射表。它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。可以通过如下配置指定大小:

  hash-max-zipmap-entries64 #配置字段最多 64 个

  hash-max-zipmap-value 512#配置 value 最大为 512 字节


(三)list

  list 是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中 key 理解为链表的名字。Redis 的 list类型其实就是一个每个子元素都是 string 类型的双向链表。链表的最大长度是(2的 32 次方)。我们可以通过 push,pop操作从链表的头部或者尾部添加删除元素。这使得 list既可以用作栈,也可以用作队列。

  常用命令:lpush、rpush、linsert、lset、lrem、lrange


(四)set

  set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作,操作中key 理解为集合的名字。Redis 的 set 是 string类型的无序集合。set 元素最大可以包含(2 的 32 次方)个元素。

  set 的是通过 hash table实现的,所以添加、删除和查找的复杂度都是 O(1)。hash table 会随着添加或者删除自动的调整大小。关于 set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。

  常用命令:sadd、srem、spop、smembers、sdiff、sunion等

 

(五)zset(stored set)

  zset 是 set 的一个升级版本,它在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的 mysql 表,一列存value,一列存顺序,操作中 key 理解为 zset 的名字。

  常用命令:zadd、zrem、zincrby、zrank、zrevrank、zrevrange、zcount

  这和开发中常用的存储类型很一致,而且命令都是同样的操作,用起来也得心应手。



利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值