Redis详细介绍,以及在SpringBoot中的简单使用

1.Redis的特点:

  (1)Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,下次启动的时候可以直接加载磁盘中的数据;

  (2)Redis不仅可以存储key-value类型的数据,还可以存储List、Set、hash、zset等数据结构的数据;

  (3)Redis支持数据的备份,即master-slave模式的备份;

  (4)Redis性能极高,读写速度特别快,读的速度为110000次/s,写的速度为81000次/s;

2.Redis的安装(Windows环境下)

  •     首先下载:https://github.com/MSOpenTech/redis/releases,解压后,将文件夹重新命名为redis;
  •     使用cmd调出命令窗口,进入redis路径下,输入redis-server.exe redis.windows.conf运行redis服务;
  •     再重新打开cmd窗口,运行redis-cli.exe -h 127.0.0.1 -p 6379 ,输入set myKey abc设置myKey的值,然后使用get myKey取值。
  • Mac下安装)

3.redis配置

  •     --使用” CONFIG GET 配置名称 ”获取配置
  •     --使用“CONFIG GET *”获取所有的配置名称
  •     --使用“CONFIG SET 配置名称 ‘要修改为的值’”来修改配置

    3.1支持的数据类型

  •     String、hash、Set、zset、List
  •     --String:set myKey “aaa”
  •     --hash:HMSET myKey field1 aa field2 bb   (HSET myKey field1)
  •     --List:

  •     --Set:

  •     --zset:

4.客户端启动

  •     --使用redis-cli启动客户端
  •     --使用PING来看是否连接成功
  •     --操控远程的redis

5.关于键的基本命令

  •     --DEL:删除键
  •     --DUMP:序列化给定的key,并返回被序列化的值
  •     --EXPIPR:(EXPIPR key seconds)为指定的key设置时间
  •     --EXISTS:检查给定的key是否存在
  •     --KEYS pattern:查找所有符合给定模式的key
  •     --……更多关于键的命令请查看:https://redis.io/commands

6.常用的redis字符串命令

  •     --SET key value:设置指定key的值
  •     --GET key:获取指定key的值
  •     --GETRANGE key start end:返回字符串中指定的字符
  •     --GETSET key value:设置key的值为value,并返回key的旧值
  •     --……更多命令请看:http://www.runoob.com/redis/redis-strings.html

7.常用的Hash的命令

  •     --HDEL key field1 [field2]:删除一个或多个哈希表字段
  •     --HEXISTS key field:查看哈希表中给定的字段是否存在
  •     --HGET key field:获取指定字段的值
  •     --HGETALL key:获取哈希表中指定key的所有字段和值
  •     --………更多命令请看:http://www.runoob.com/redis/redis-hashes.html

8.常用的List的命令

  •     --LINDEX key index:通过索引获取列表中的元素
  •     --LLEN key:获取列表长度
  •     --LPOP key:移除并获取列表的第一个元素
  •     --LPUSH key value1[value2]:将一个或多个值插入到列表头部
  •     --………更多命令请看:http://www.runoob.com/redis/redis-lists.html

9.集合和有序集合相关命令

http://www.runoob.com/redis/redis-sorted-sets.html

10.什么是基数?

  •     基数就是一个集合中不重复的元素:例如{1,3,5,7,5,7,8},那么这个集合的基数为{1,3,5,7,8}。基数估计就是在误差可接受的范围内快速计算基数。
  •     Redis在2.8.9增加了HyperLogLog结构:

11.发布订阅者模式

  •     Redis发布订阅者模式:是一种消息发布模式,发布(pub)即发送消息,订阅(sub)即接受消息。使用SUBSCRIBE “频道名称”创建一个频道,然后重新打开另外一个客户端,通过PUBLISH redisChat “message”向频道发送消息,然后客户端就可以收到消息了。具体实例如下图所示:
  •    

  •     发布订阅模式常见的命令为:

12.事务

  •     redis事务:一次可以执行多个命令,并带有一下几个特性:
  •     (1)批量操作在执行EXES命令前会被放入到缓存中
  •     (2)执行EXES命令时,进入事务执行,如果任意的命令执行失败,其他的命令会继续执行
  •     (3)在EXEC执行的过程中,其他客户端发送的命令不会被插入到事务的命令序列中
  •     redis事务的执行过程分为:开始事务——命令入队——执行事务,具体的示例如下图所示:

  •     它以MULTI开始一个事务,然后将多个命令加入到队列当中,最后以EXEC触发事务执行。如果其中的任意一个命令执行失败,都不会影响剩下的命令进行执行,而执行过的命令也不会进行回滚。常见的事务的命令如下所示:

13.脚本执行

  •     Redis:使用Lua解释器来执行Redis脚本,Redis2.6内嵌了Lua解释器,常用的命令为EVAL。具体的示例如下图所示:

  •     常见的Redis脚本的命令为:

14.连接

  •     redis连接主要用于连接redis服务,下面的示例描述了如何设置密码、如何连接服务、验证是否连接成功等步骤:

  •     常见的连接命令为:

15.服务器

  •     --查看服务器信息INFO
  •     --获取连接到服务器的所有的客户端信息
  •     其他常见的redis服务器的命令如一下连接所示:

            http://www.runoob.com/redis/redis-server.html

16.数据保存与备份

  •     使用SAVE创建当前数据库的备份;
  •     使用CONFIG GET dir获取redis目录,只需要将redis目录下的dump.rdb文件移动到redis的安装目录下,重启服务就可以完成数据的恢复;
  •     使用BGSAVE创建备份文件,该命令在后台执行。

17.性能测试

  •     在非redis服务下,使用redis-benchmark 参数 具体值   的形式来对redis的性能进行测试。详细的参数列表如下图所示:

  •     具体的示例如下图所示:

18.客户端连接

  •     客户端的最大连接数默认为10000

  •     Redis通过监听一个TCP端口或者Unix socket的方式来接受来自客户端的连接,当一个连接建立后,Redis内部会进行一下操作:
  •     首先,客户端socket会被设置为非阻塞模式,因为Redis在网络事件处理上采用的是非阻塞多路复用模型;
  •     然后为这个socket设置TCP_NODELAY属性,禁用Nagle算法;
  •     然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送。
  •     ----常见的客户端命令如下图所示:

19.管道技术

  •     Redis是一种基于客户端、服务端和请求相应协议的TCP协议。他的具体流程如下:
  •     (1)客户端发送请求至服务端,并监听socket返回,等待服务器相应
  •     (2)服务器端收到请求并处理,将处理后的结果返回给客户端
  •     Redis管道技术可以在服务端未响应时,客户端继续向服务端发送请求,然后一次性接受所有的服务端相应。
  •     查看Redis管道只需要开启Redis实例,然后输入以下命令即可,具体示例如下图所示:

  •     上面的例子中,首先我们查看redis是否连接,然后设置了runoobkey的值,接下来获取了runoobkey的值并使得visitor的值自增3次。在返回的结果中我们看到,所有的命令一次性提交,并返回了全部的响应结果。
  •     管道开启后,速度会提升很多。。。。。。

20.分区

  •     分区是分割数据到多个Redis实例的过程,也就是每个实例只保存key的一个子集。
  •     ----优势
  •     (1)通过分区,可以构造更大的数据库
  •     (2)利用多核和多台计算机,可以提升计算速度
  •     (3)通过多台计算机以及网络适配器,允许我们拓展带宽
  •     但是涉及多个key的操作通常是不被支持的。
  •     Redis 有两种类型分区。 假设有4个Redis实例 R0,R1,R2,R3,和类似user:1,user:2这样的表示用户的多个key,对既定的key有多种不同方式来选择这个key存放在哪个实例中。也就是说,有不同的系统来映射某个key到某个Redis服务。
  •     1)、范围分区
  •     就是映射一定范围的对象到某个Redis实例,例如,ID从0到10000的用户会被映射到Redis实例1,范围在10001到20001的用户将会被映射到Redis实例2.。。。。。
  •     2)、hash分区
  •     利用hash的一个函数将这个key转换成一个整数,然后对这个整数进行取模,例如:如果模为2,则将这个key映射到R2中。

21.SpringBoot中使用Redis

  •     以springboot为例:
  •     首先导入依赖包:

  •     使用RedisTemplate连接redis:

  •     最简单的插入操作:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值