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的应用场景,通常用来存储一个用户信息的对象数据。
- 相比于存储对象的string类型的json串,json串修改单个属性需要将整个值取出来。而hash不需要。
- 相比于多个key-value存储对象,hash节省了很多内存空间
- 如果hash的属性值被删除完,那么hash的key也会被redis删除
List
类似于Java中的LinkedList。
应用场景
- 对数据大的集合数据删减
- 列表显示、关注列表、粉丝列表、留言评价...分页、热点新闻等
- 任务队列
- list通常用来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样通过order by来排序
补充:
rpoplpush list1 list2 移除list1最后一个元素,并将该元素添加到list2并返回此元素
用此命令可以实现订单下单流程、用户系统登录注册短信等。
性能总结
- 它是一个字符串链表,left、right都可以插入添加;
- 如果键不存在,创建新的链表;
- 如果键已存在,新增内容;
- 如果值全移除,对应的键也就消失了。
- 链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。
Set
唯一、无序
对两个集合间的数据[计算]进行交集、并集、差集运算
- 以非常方便的实现如共同关注、共同喜好、二度好友等功能。对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存储到一个新的集合中。
- 利用唯一性,可以统计访问网站的所有独立 IP
Zset
有序且不重复。每个元素都会关联一个double类型的分数,Redis通过分数进行从小到大的排序。分数可以重复。
应用场景
常用于排行榜
- 如推特可以以发表时间作为score来存储
- 存储成绩
- 还可以用zset来做带权重的队列,让重要的任务先执行
本文地址:https://blog.csdn.net/wenchangwenliu/article/details/107603247
上一篇: HTML5 SEO优化的一些建议
下一篇: nisp一级练习题及答案
推荐阅读
-
JavaScript的检测属性介绍
-
sql2005 数据库转为sql2000数据库的方法(数据导出导入)
-
Notepad++怎么更改快捷键?Notepad++添加修改快捷键的方法介绍
-
sublime text 3快捷键失效怎么办?解决sublime text 3快捷键失效的设置方法
-
在debian系统安装golang的sdk图文教程
-
UG怎么绘制爱心模型? ug制作三维立体心形的教程
-
SQL2005CLR函数扩展-解析天气服务的实现
-
基于SQL2005 SQL2008 表结构信息查询升级版的详解(含外键信息)
-
来探讨一下最近面试问的ThreadLocal问题
-
permiere怎么使用闪光灯功能? pr闪光灯的使用方法