电脑上制作网站的软件,跨境电商千万别做亚马逊,嘉兴市南湖区城乡规划建设局网站,wordpress 做网店Redis是目前最流行的键值对#xff08;key-value#xff09;数据库#xff0c;以出色的性能著称#xff0c;官方提供的数据是可以支持100000以上的QPS。Redis具有高性能的主要原因如下#xff1a;
Redis是基于内存的存储数据库#xff0c;绝大部分的命令处理只是纯粹的内…Redis是目前最流行的键值对key-value数据库以出色的性能著称官方提供的数据是可以支持100000以上的QPS。Redis具有高性能的主要原因如下
Redis是基于内存的存储数据库绝大部分的命令处理只是纯粹的内存操作内存的读写速度非常快。Redis是单进程线程的服务实际上一个正在运行的Redis Server肯定不止一个线程但只有一个线程来处理网络请求避免了不必要的上下文切换同时不存在加锁/释放锁等同步操作。Redis使用多路I/O复用模型select、poll、epoll可以高效处理大量并发连接。Redis中的数据结构是专门设计的增、删、改、查等操作相对简单。
1、Redis简介
RedisREmote DIctionary Server是一个使用ANSI C编写的、开源的、支持网络的、基于内存的、可选持久化的键值对存储系统。在2013年5月之前Redis的开发由VMware赞助2013年5月至2015年6月由Pivotal赞助从2015年6月起Redis的开发由Redis Labs赞助。根据数据库使用排行网站db-engines.com上的排名Redis是目前最流行的键值对存储系统。
Redis由Salvatore Sanfilippo在2009年发布初始版本开源后不断发展壮大目前的最新版为Redis 7.0。
Redis在互联网数据存储方面应用广泛主要具有以下优点
Redis是内存型的数据库也就是说Redis中的key-value对是存储在内存中的因而效率比磁盘型的快。Redis的工作模式为单线程Redis6之前从Redis6开始支持多线程不需要线程间的同步操作。Redis采用单线程主要因为其瓶颈在内存和带宽上而不是CPU。Redis中key-value的value不仅可以是字符串也可以是复杂的数据类型如链表、集合、散列表等。Redis支持数据持久化可以采用RDB、AOF、RDBAOF三种方案。计算机重启后可以在磁盘中进行数据恢复。Redis支持主从结构可以利用从实例进行数据备份。
2、Redis 5.0的新特性
相较于Redis 4.0, Redis 5.0增加了很多新的特性限于篇幅本节主要介绍几个较重要的特性具体内容可以参考官方文档
新增Streams数据类型这是Redis 5.0最重要的改进之一。可以把Streams当作消息队列新的模块API、定时器、集群及字典。RDB中持久化存储LFU和LRU的信息。将集群管理功能完全用C语言集成到redis-cli中Redis 3.x和Redis 4.x的集群管理是通过Ruby脚本实现的。有序集合新增命令ZPOPMIN/ZPOPMAX。改进HyperLogLog的实现。新增Client Unblock和Client ID。新增LOLWUT命令。Redis主从复制中的从不再称为Slave改称Replicas。Redis 5.0引入动态哈希以平衡CPU的使用率和相应性能可以通过配置文件进行配置。Redis 5.0默认使用动态哈希。Redis核心代码进行了部分重构和优化。
3、Redis常用数据类
Redis的数据存储结构是key-value对定义key时要注意以下几点
key不要太长尽量不要超过1024Byte太长的话不仅消耗内存而且会降低查找的效率。key也不要太短太短的话key的可读性会降低。一个项目中key单词与单词之间以分开例如SET user-nameloginnamewangwu。
这里主要简单介绍Redis的5种数据类型即String、Hash、List、Set及Sorted Set。
3.1、String类型
String类型是Redis最基本的数据类型一个key对应一个value。String类型是二进制安全的即Redis的String类型可以包含任何数据例如扩展名为.jpg的图片或者序列化的对象。
3.2、Hash类型
Redis的Hash类型是一个String类型的域field和value的映射表Hash类型特别适用于存储对象例如Username、Password和Age等。
Redis中的每个Hash类型数据都可以存储2^32-1个field-value对。
3.3、List类型
在Redis中List类型是按照元素的插入顺序排序的字符串列表。在插入时如果key并不存在Redis将为该key创建一个新的列表。List类型中可以包含的最大元素数量是4 294 967 295。
3.4、Set类型
Redis的Set类型是String类型的无序集合。集合中的元素是唯一的不能出现重复的元素。
3.5、Sorted Set类型
Sorted Set类型是Set类型的一个加强版本它在Set类型的基础上增加了一个顺序属性。这一属性在添加、修改元素的时候可以指定每次指定后有序集合会自动按新的值调整顺序。
有序集合中的元素是唯一的但分数Score却可以重复。
3.6、Redis HyperLogLog
Redis 2.8.9中添加了HyperLogLog。Redis的HyperLogLog是用来做基数统计的主要使用场景是海量数据的计算。HyperLogLog的优点是在输入元素的数量非常多时计算基数所需的空间总是很小。HyperLogLog只会根据输入元素来计算基数而不会存储元素本身。基数就是不重复元素的个数。例如数据集{1357578}那么这个数据集的基数集为{13578}基数为5。HyperLogLog可以看作一种算法它提供了不精确的基数计数方案。
HyperLogLog一开始就是为了大数据量的统计而发明的很适合那种数据量很大又允许有一点误差的计算例如页面用户访问量。HyperLogLog提供了不精确的去重技术方案标准误差是0.81%这对于页面用户访问量的统计是可以接受的。因为访问量可能非常大但是访问量统计对准确率要求没那么高没必要做到绝对准确HyperLogLog正好符合这种要求不会占用太多存储空间同时性能也不错。总之Redis的HyperLogLog特别适用对海量数据进行统计对内存占用有要求并且能够接受一定的错误率的场景。