7000字Redis超详细总结笔记总收藏必备!

上传人:ja****ee 文档编号:144653729 上传时间:2020-09-12 格式:DOC 页数:17 大小:224KB
返回 下载 相关 举报
7000字Redis超详细总结笔记总收藏必备!_第1页
第1页 / 共17页
7000字Redis超详细总结笔记总收藏必备!_第2页
第2页 / 共17页
7000字Redis超详细总结笔记总收藏必备!_第3页
第3页 / 共17页
7000字Redis超详细总结笔记总收藏必备!_第4页
第4页 / 共17页
7000字Redis超详细总结笔记总收藏必备!_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《7000字Redis超详细总结笔记总收藏必备!》由会员分享,可在线阅读,更多相关《7000字Redis超详细总结笔记总收藏必备!(17页珍藏版)》请在金锄头文库上搜索。

1、Redis 简介Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库Redis 与 其他 key - value 缓存产品有以下三个特点: Redis 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis 不仅仅支持简单的 key - value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储 Redis 支持数据的备份,即 master - slave 模式的数据备份Redis 优势 性能极高 Redis 读的速度是 110000 次 /s, 写的速度是 81000 次 /s

2、。 丰富的数据类型 - Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子性 - Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC 指令包起来。 其他特性 - Redis 还支持 publish/subscribe 通知,key 过期等特性。Redis 数据类型Redis 支持 5 中数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset(sorted set:

3、有序集合)stringstring 是 redis 最基本的数据类型。一个 key 对应一个 value。string 是二进制安全的。也就是说 redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象。string 类型是 redis 最基本的数据类型,string 类型的值最大能存储 512 MB。理解:string 就像是 java 中的 map 一样,一个 key 对应一个 value127.0.0.1:6379sethelloworldOK127.0.0.1:6379gethelloworldhashRedis hash 是一个键值对(key - value

4、)集合。Redis hash 是一个 string 类型的 key 和 value 的映射表,hash 特别适合用于存储对象。理解:可以将 hash 看成一个 key - value 的集合。也可以将其想成一个 hash 对应着多个 string。与 string 区别:string 是 一个 key - value 键值对,而 hash 是多个 key - value 键值对。/hash-key可以看成是一个键值对集合的名字,在这里分别为其添加了sub-key1:value1、sub-key2:value2、sub-key3:value3这三个键值对127.0.0.1:6379hsethas

5、h-keysub-key1value1(integer)1127.0.0.1:6379hsethash-keysub-key2value2(integer)1127.0.0.1:6379hsethash-keysub-key3value3(integer)1/获取hash-key这个hash里面的所有键值对127.0.0.1:6379hgetallhash-key1)sub-key12)value13)sub-key24)value25)sub-key36)value3/删除hash-key这个hash里面的sub-key2键值对127.0.0.1:6379hdelhash-keysub-ke

6、y2(integer)1127.0.0.1:6379hgethash-keysub-key2(nil)127.0.0.1:6379hgethash-keysub-key1value1127.0.0.1:6379hgetallhash-key1)sub-key12)value13)sub-key34)value3listRedis 列表是简单的字符串列表,按照插入顺序排序。我们可以网列表的左边或者右边添加元素。127.0.0.1:6379rpushlist-keyv1(integer)1127.0.0.1:6379rpushlist-keyv2(integer)2127.0.0.1:6379rp

7、ushlist-keyv1(integer)3127.0.0.1:6379lrangelist-key0-11)v12)v23)v1127.0.0.1:6379lindexlist-key1v2127.0.0.1:6379lpoplist(nil)127.0.0.1:6379lpoplist-keyv1127.0.0.1:6379lrangelist-key0-11)v22)v1我们可以看出 list 就是一个简单的字符串集合,和 Java 中的 list 相差不大,区别就是这里的 list 存放的是字符串。list 内的元素是可重复的。setredis 的 set 是字符串类型的无序集合。集

8、合是通过哈希表实现的,因此添加、删除、查找的复杂度都是 O(1)127.0.0.1:6379saddk1v1(integer)1127.0.0.1:6379saddk1v2(integer)1127.0.0.1:6379saddk1v3(integer)1127.0.0.1:6379saddk1v1(integer)0127.0.0.1:6379smembersk11)v32)v23)v1127.0.0.1:6379127.0.0.1:6379sismemberk1k4(integer)0127.0.0.1:6379sismemberk1v1(integer)1127.0.0.1:6379sr

9、emk1v2(integer)1127.0.0.1:6379sremk1v2(integer)0127.0.0.1:6379smembersk11)v32)v1redis 的 set 与 java 中的 set 还是有点区别的。redis 的 set 是一个 key 对应着 多个字符串类型的 value,也是一个字符串类型的集合但是和 redis 的 list 不同的是 set 中的字符串集合元素不能重复,但是 list 可以。Zsetredis zset 和 set 一样都是 字符串类型元素的集合,并且集合内的元素不能重复。不同的是,zset 每个元素都会关联一个 double 类型的分数。

10、redis 通过分数来为集合中的成员进行从小到大的排序。zset 的元素是唯一的,但是分数(score)却可以重复。127.0.0.1:6379zaddzset-key728member1(integer)1127.0.0.1:6379zaddzset-key982member0(integer)1127.0.0.1:6379zaddzset-key982member0(integer)0127.0.0.1:6379zrangezset-key0-1withscores1)member12)7283)member04)982127.0.0.1:6379zrangebyscorezset-key

11、0800withscores1)member12)728127.0.0.1:6379zremzset-keymember1(integer)1127.0.0.1:6379zremzset-keymember1(integer)0127.0.0.1:6379zrangezset-key0-1withscores1)member02)982zset 是按照分数的大小来排序的。发布订阅一般不用 Redis 做消息发布订阅。简介Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频

12、道 channel1 , 以及订阅这个频道的三个客户端 client2 、 client5 和 client1 之间的关系:学Redis这篇就够了当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:学Redis这篇就够了实例以下实例演示了发布订阅是如何工作的。在我们实例中我们创建了订阅频道名为redisChat:127.0.0.1:6379SUBsCRIBEredisChatReadingmessages.(pressCtrl-Ctoquit)1)subscribe2)redisChat现在,我们先重新开启个 redis 客户端,然后

13、在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。127.0.0.1:6379PUBLISHredisChatsendmessage(integer)1127.0.0.1:6379PUBLISHredisChathelloworld(integer)1#订阅者的客户端显示如下1)message2)redisChat3)sendmessage1)message2)redisChat3)helloworld发布订阅常用命令自行查阅事务redis 事务一次可以执行多条命令,服务器在执行命令期间,不会去执行其他客户端的命令请求。事务中的多条命令被一次性发送给服务器,而不是一条一条地

14、发送,这种方式被称为流水线,它可以减少客户端与服务器之间的网络通信次数从而提升性能。Redis 最简单的事务实现方式是使用 MULTI 和 EXEC 命令将事务操作包围起来。 批量操作在发送 EXEC 命令前被放入队列缓存。 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余命令依然被执行。也就是说 Redis 事务不保证原子性。 在事务执行过程中,其他客户端提交的命令请求不会插入到事务执行命令序列中。一个事务从开始到执行会经历以下三个阶段: 开始事务。 命令入队。 执行事务。实例以下是一个事务的例子, 它先以MULTI开始一个事务, 然后将多个命令入队到事务中, 最后由EXEC命令触发事务, 一并执行事务中的所有命令:redis127.0.0.1:6379MULTIOKredis127

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号