美文网首页
【Redis数据类型解析】

【Redis数据类型解析】

作者: 热血趁年华 | 来源:发表于2018-07-05 00:20 被阅读0次

Redis keys:

作为redis的key需要注意一下几个原则

1. key可以为null

2.key不能太长,太长的话不仅仅消耗内存而且还在查询过程中会提高查询的成本

3 可以不易过短,不方便阅读

Redis String

 String类型不仅仅是字符串类型,还可以是数值类型的字符串,比如“”123“”。redis会解析成为int类型进行操作,操作完毕后会再次保存为String类型,对于String的操作是原子操作,也就意味着当并发操作的时候,不会产生脏数据。

 通过set/get操作设置

当时数值型的字符串的时候可以实现自增自减

set key 100   ** key:key value:100

incr key   // 101  **指定默认自增1

incrby key 50   //151   **指定自增50

getset   key  34  ***获取key的值并将key的值设置为34

mset /mget  ***  一次设置多个key-value,一次获取多个 key

exits/del  **判断是否存在key,删除key

expire key  5  **设置key的存活时间,一旦到了存活时间,就会自动删除

(具体的api在后面的操作上如果不是很重要的话,在操作的时候直接可以查找api,在这里并不会过多的去涉及)

使用场景:根据其自增特性,在统计网站的访客数量时可以使用该数据类型

Redis Lists

lists数据类型顶层是用Linked list链表来实现的,链表存储数据的特点是增删改速度比较快,数据是有序可重复。同时也就意味着,在操作的lists数据类型的时候,可以指定在链头操作也可以在链尾操作,

list上提供非阻塞操作,上文中提过,redis可以作为队列,当时当lredis作为队列的时候,消费者要不断的从redis中获取数据,当redis中数据为空的时候,消费者还不断的从redis中获取数据的话,就会增加其访问压力,造成cpu空转,所以redis提供了响应的api比如:BlPOP/BRPOP 。该命令后面跟着时间n,意味着,redis先去查找库中的元素,当找到的时候直接返回该元素并删除元素,如果没有找到的时候会阻塞n秒后返回 nil 并结束查找。

使用场景:比如消息系统中,作为消息传递,关注列表中使用该数据结构,但是如果是不能重复那么就使用ZSET。

Redis Hash

hash 底层使用的时hasMap,一般用于存储结构化数据,可以理解为JavaBean,使用该数据类型可以减少序列化和反序列化,需要修改/获取value的某一个属性,只需要key+filed(hashMap的key)即可。

使用场景:比如存储用户的个人信息

Redis Set

set数据类型特点是,无序不可重复。可以查找并集交集等等,sunionstore:用来复制信息,底层使用hashmap来实现的,只是改hashmap的value为空,

使用场景:可以将注册的用户信息放入set中,或者投票用户的信息,通过sismember 来判断是否重复注册或者投票。

Redis ZSet

zset数据类型,是有序不可重复的集合,该排序功能通过zset集合的每一个元素和一个score(double类型)进行绑定映射,从而实现排序功能

使用场景:网站统计投票top前10的客户信息,网站访问的客户信息,以访问的时间作为权重,这样自动排序访问客户的数据。

相关文章

网友评论

      本文标题:【Redis数据类型解析】

      本文链接:https://www.haomeiwen.com/subject/ribyuftx.html