Redis学习(3) - 补充

1. 管道

Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

# 在使用管道的时候需要安装nc包
[root@base ~] yum -y install nc
# 测试reids是否存活, 其中 '-e'代表转义'\n'换行符, localhost为redis的ip.6379为redis的端口号
[root@base ~] echo -e "ping\n" | nc localhost 6379
+PONG
# 创建一个测试数据,通过计算,打印结果
[root@base ~] echo -e 'set price 80\n incr price\n decrby price 10\n get price' | nc localhost 6379
+OK
:81
:71
$2
71
[root@base ~] redis-cli 
127.0.0.1:6379> get price #发现与打印结果一致
"71"

节约成本,减少IO次数

2.事务

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

  1. 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
  2. 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
# 查看帮助
127.0.0.1:6379> help @transactions

# 事务的使用, 一般为三个阶段: 开启事务,命令入队,执行事务. 事务开启期间会有标识 'TX'
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set k1 xiaoming
QUEUED
127.0.0.1:6379(TX)> EXEC
1) OK

假设同时开启事务1,2 , 但是在事务1优先执行

在这里插入图片描述
在这里插入图片描述

假设同时开启事务1,2 , 但是在事务2优先执行

在这里插入图片描述
在这里插入图片描述

结论: 命令的执行顺序,只和exec的执行顺序有关系

WATCH: redis事务的watch命令,类似乐观锁的作用.当监控对象改变,则停止事务.

样例: 我们对一个已存在的k1进行监控. 当在执行事务完毕之前,对k1进行更改. 查看执行的结果.
在这里插入图片描述
在这里插入图片描述

3.布隆过滤器安装

推荐2.2.*版本的. 2.4.x以上版本好像编译会报错如下

在这里插入图片描述

# 下载,下载不了的直接使用顶部的资源
wget https://github.com/RedisBloom/RedisBloom/archive/refs/tags/v2.2.18.zip
# 解压
yum -y install unzip
unzip v2.2.18.zip
# 到解压的目录进行编译
cd RedisBloom-2.2.18/ && make

在这里插入图片描述
redisbloom.so就是我们需要的模块

3.1.启动方式一

启动之前需要将之前的服务停止

# 停止服务并验证
[root@base ~]# systemctl stop  redis_6379.service 
[root@base ~]# systemctl status redis_6379.service

# 运行
[root@base RedisBloom-2.2.18]# nohup redis-server --loadmodule /opt/software/bf/RedisBloom-2.2.18/redisbloom.so &
[1] 27736
[root@base RedisBloom-2.2.18]# nohup: 忽略输入并把输出追加到"nohup.out"

[root@base RedisBloom-2.2.18]# jobs
[1]+  运行中               nohup redis-server --loadmodule /opt/software/bf/RedisBloom-2.2.18/redisbloom.so &
[root@base RedisBloom-2.2.18]# ps -ef | grep -v grep | grep redis
root      27736  60703  0 18:46 pts/2    00:00:00 redis-server *:6379
root     101774 101498  0 18:16 pts/0    00:00:00 redis-cli
# 测试
127.0.0.1:6379> BF.EXISTS # 进入redis客户端,BF.可以tab补全,说明已经添加上该模块

注意事项: 使用命令的时候, 路径必须是绝对路径,不然会报错
在这里插入图片描述

3.2.启动方式二

 vi /etc/init.d/redis_6379

在这里插入图片描述

vi /etc/redis/6379.conf

根据样例,我们将需要的模块进行添加

在这里插入图片描述

# 重启服务并验证
[root@base init.d]# systemctl restart redis_6379.service 
[root@base init.d]# redis-cli 
127.0.0.1:6379> BF.ADD

此时模块已经安装成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值