Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介


Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
Redis简介以及和其他缓存数据库的区别
一、Redis简介
Redis是一个开源的内存中的数据结构存储系统 , 它可以用作数据库、缓存和消息中间件 。
它支持多种类型的数据结构 , 如字符串(Strings) , 散列(Hashes) , 列表(Lists) , 集合(Sets) , 有序集合(SortedSets或者是ZSet)与范围查询 , Bitmaps , Hyperloglogs和地理空间(Geospatial)索引半径查询 。 其中常见的数据结构类型有String、List、Set、Hash、ZSet这5种 。
Redis内置了复制(Replication) , LUA脚本(Luascripting) , LRU驱动事件(LRUeviction) , 事务(Transactions)和不同级别的磁盘持久化(Persistence) , 并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(HighAvailability) 。
Redis也提供了持久化的选项 , 这些选项可以让用户将自己的数据保存到磁盘上面进行存储 。 根据实际情况 , 可以每隔一定时间将数据集导出到磁盘(快照) , 或者追加到命令日志中(AOF只追加文件) , 他会在执行写命令时 , 将被执行的写命令复制到硬盘里面 。 您也可以关闭持久化功能 , 将Redis作为一个高效的网络的缓存数据功能使用 。
Redis不使用表 , 他的数据库不会预定义或者强制去要求用户对Redis存储的不同数据进行关联 。
数据库的工作模式按存储方式可分为:硬盘数据库和内存数据库 。 Redis将数据储存在内存里面 , 读写数据的时候都不会受到硬盘I/O速度的限制 , 所以速度极快 。
(1)硬盘数据库的工作模式:
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
(2)内存数据库的工作模式:
Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介
文章图片
二、Redis优势和优点
(1)性能极高–Redis能读的速度是110000次/s,写的速度是81000次/s 。
(2)丰富的数据类型–Redis支持二进制案例的Strings,Lists,Hashes,Sets及OrderedSets数据类型操作 。
(3)原子–Redis的所有操作都是原子性的 , 同时Redis还支持对几个操作全并后的原子性执行 。
(4)丰富的特性–Redis还支持publish/subscribe(发布/订阅),通知,key过期等等特性 。
三、Redis与其他key-value缓存产品有以下三个特点:
(1)Redis支持数据的持久化 , 可以将内存中的数据保存在磁盘中 , 重启的时候可以再次加载进行使用 。
(2)Redis不仅仅支持简单的key-value类型的数据 , 同时还提供list , set , zset , hash等数据结构的存储 。
(3)Redis支持数据的备份 , 即master-slave模式的数据备份 。
四、Redis和Memcached的区别
Redis常被拿来和高性能键值缓存服务器Memcached进行对比:这两者都可以用来存储键值对 , 彼此的性能也相差无几 , 但是Redis相对支持更多的数据类型 , 除了支持键值对之外 , 还支持list , set , zset , hash等数据结构的存储 , 而Memcached只能存储普通的字符串键 。
Memcached用户只能通过APPEND的方式将数据添加到已有的字符串的末尾 , 并将这个字符串当做列表来使用 。 但是在删除这些元素的时候 , Memcached采用的是通过黑名单的方式来隐藏列表里的元素 , 从而避免了对元素的读取、更新、删除等操作 。 相反的Redis的List和Set允许用户直接添加和删除元素 。
Redis和Memcached的其他区别如下:
1、Redis和Memcached都是将数据存放在内存中 , 都是内存数据库 。 不过Memcached还可用于缓存其他东西 , 例如图片、视频等等;
2、Redis不仅仅支持简单的K/V类型的数据 , 同时还提供List , Set , Hash等数据结构的存储;