一、Redis简介
redis是Nosql数据库中使用较为广泛的非关系型内存数据库,redis内部是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型,类似于Java中的map)。Redis基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构存储服务务器。
二、Redis的特性
多种数据类型存储:
1、字符串类型
2、散列类型
3、列表类型
4、集合类型
5、有序集合类型
内存存储与持久化:
1、内存的读写速度远快于硬盘
2、自身提供了持久化功能(RDB、AOF两种方式)
功能丰富:
1、可用作缓存、队列、消息订阅/发布
2、支持键的生存时间
3、按照一定规则删除相应的键
简单稳定:
1、相比SQL而言更加简单
2、不同语言的客户端丰富
3、基于C语言开发,代码量少
Redis特性:
1、性能极高:Redis能读的速度是110000次/s,写的速度是81000次/s。
2、丰富的数据类型:Redis支持二进制案例的Strings、Lists、Hashes、Sets及OrderedSets数据类型操作。
3、原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
4、其它特性:Redis还支持publish/subscribe、通知、key过期等特性。
三、下载安装(MacOS)
1、下载地址:https://redis.io/download/
2、解压安装
3、测试连接性与状态回复
4、Redis的多数据库
Redis默认支持16个数据库,可以通过修改配置文件来更改支持数据库的数量,对外都是以一个从0开始的递增数字命名,可以通过参数databases来修改默认数据库个数。客户端连接Redis服务后会自动选择0号数据库,可以通过select命令更换数据库,例如选择1号数据库:
说明:
1、Redis不支持自定义数据库名称。
2、Redis不支持为每个数据库设置访问密码。
3、Redis的多个数据库之间是完全隔离的。
四、Redis的基本命令
以下命令均在redis-cli客户端执行
五、Redis的字符串数据类型
字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。可以存储json化的对象、字节数组等。一个字符串类型键允许存储的数据最大容量是512MB。
赋值与取值:
递增数字:
增加定制的整数:
减少整数:
减少指定的整数:
尾部追加值:
获取字符串长度:
同时设置多个值:
同时获取多个值:
六、列表类型
Redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含 4294967295,每个列表超过40亿个元素。
自动返回并删除列表的第一个(LPOP)或最后一个(RPOP)元素。例如,如果列表包含元素“a”、“b”、“c”,LPOP将返回“a”,而列表将变成“b”、“c”。如果键不存在或列表已为空,则返回特殊值“nil”
返回存储在指定键处的列表的指定元素。0是第一个元素,1是第二个元素,依此类推。支持负索引,例如-1是最后一个元素,-2是倒数第二个元素,依此类推。
如果键处存储的值不是列表类型,则返回错误。如果索引超出范围,则返回空字符串。请注意,即使平均时间复杂度是O(n),请求列表的第一个或最后一个元素也是O(1)。
在列表的元素前或者后插入元素
返回存储在指定键的列表的长度。如果键不存在,则返回零(与空列表的行为相同)。如果键处存储的值不是列表,则返回错误
将一个值插入到列表头部
将一个值插入到已存在的列表头部
获取列表指定范围内的元素
移除列表元素
通过索引设置列表元素的值
对一个列表进行修剪(trim),即让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
移除列表的最后一个元素,并将该元素添加到另一个列表并返回
在列表中添加一个或多个值
为已存在的列表添加值
七、Redis集合
Redis的set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。集合中最大的成员数为4294967295,每个集合可存储40多亿个成员。
向集合添加一个成员:
获取集合的成员数
返回给定所有集合的差集
返回给定所有集合的差集并存储在destination中
返回给定所有集合的交集
返回给定所有集合的交集并存储在destination中
判断member元素是否是集合key的成员
返回集合中的所有成员
将member元素从source集合移动到destination集合
移除并返回集合中的一个随机元素
返回集合中一个随机数
移除集合中一个或多个成员
返回所有给定集合的并集
所有给定集合的并集存储在 destination 集合中
八、Hash数据结构
Redishash是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis中每个hash可以存储4294967295个键值对。
取值与赋值:
执行插入操作时返回1,执行更新操作时返回0
判断字段是否存在:
Hash的自增长:
删除字段,返回值是被删除的字段个数:
只获取字段名或字段值:
获取字段数量:
九、Redis职务
9.1、Redis事务
Redis事务可以一次执行多个命令,并且带有以下两个重要的保证:
1、事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
2、事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
一个事务从开始到执行会经历以下三个阶段:
1、开始事务。
2、命令入队。
3、执行事务。
9.2、Redis事务命令
下表列出了redis事务的相关命令:
取消事务,放弃执行事务块内的所有命令:
执行所有事务块内的命令:
标记一个事务块的开始:
取消WATCH命令对所有key的监视:
监视一个key ,如果在事务执行之前这个key被其他命令所改动,那么事务将被打断:
版权声明:本文内容来自CSDN:武天旭,遵循CC 4.0 BY-SA版权协议上原文接及本声明。
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。
原文链接:https://security.blog.csdn.net/article/details/110441780?spm=1001.2014.3001.5502
如有涉及到侵权,请联系,将立即予以删除处理。
在此特别鸣谢原作者的创作。
此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。