欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Redis的数据类型

程序员文章站 2022-03-06 15:58:33
Redis的五种数据类型:string、hash、list、set、zset。Stringstring类型是二进制安全的,redis的string可以包含任何数据,如图像、序列化对象。一个键最多能存储512MB。二进制安全是指,在传输数据的时候,能保证二进制数据的信息安全,也就是不会被篡改、破译;如果被攻击,能够及时检测出来 。String应用场景String通常用于保存单个字符串或JSON字符串数据因为String是二进制安全的,所以可以把保密要求高的图片文件内容作为字符串来存储...

Redis的五种数据类型:string、hash、list、set、zset。

String

string类型是二进制安全的,redis的string可以包含任何数据,如图像、序列化对象。

一个键最多能存储512MB。二进制安全是指,在传输数据的时候,能保证二进制数据的信息安全,也就是不会被篡改、破译;如果被攻击,能够及时检测出来 。

String应用场景

  • String通常用于保存单个字符串或JSON字符串数据
  • 因为String是二进制安全的,所以可以把保密要求高的图片文件内容作为字符串来存储
  • 计数器:常规Key-Value缓存应用,如微博数、粉丝数。INCR本身就具有原子性特性,所以不会有线程安全问题

Hash

Redis hash是一个string类型的field和value的映射表,hash特别适用于存储对象。每个hash可以存储232-1(40亿左右)键值对。可以看成KEY和VALUE的MAP容器。相比于JSON,hash占用很少的内存空间。

应用场景

Hash的应用场景,通常用来存储一个用户信息的对象数据。

  1. 相比于存储对象的string类型的json串,json串修改单个属性需要将整个值取出来。而hash不需要。
  2. 相比于多个key-value存储对象,hash节省了很多内存空间
  3. 如果hash的属性值被删除完,那么hash的key也会被redis删除

List

类似于Java中的LinkedList。

应用场景

  1.  对数据大的集合数据删减
  2. 列表显示、关注列表、粉丝列表、留言评价...分页、热点新闻等
  3. 任务队列
  4. list通常用来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样通过order by来排序

补充:
rpoplpush list1 list2 移除list1最后一个元素,并将该元素添加到list2并返回此元素
用此命令可以实现订单下单流程、用户系统登录注册短信等。

性能总结

  1. 它是一个字符串链表,left、right都可以插入添加;
  2. 如果键不存在,创建新的链表;
  3. 如果键已存在,新增内容;
  4. 如果值全移除,对应的键也就消失了。
  5. 链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

Set

唯一、无序

对两个集合间的数据[计算]进行交集、并集、差集运算

  • 以非常方便的实现如共同关注、共同喜好、二度好友等功能。对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存储到一个新的集合中。
  • 利用唯一性,可以统计访问网站的所有独立 IP

Zset

有序且不重复。每个元素都会关联一个double类型的分数,Redis通过分数进行从小到大的排序。分数可以重复。

应用场景

常用于排行榜

  1. 如推特可以以发表时间作为score来存储
  2. 存储成绩
  3. 还可以用zset来做带权重的队列,让重要的任务先执行

本文地址:https://blog.csdn.net/wenchangwenliu/article/details/107603247

相关标签: redis