redis-doc-分布式

Redis布隆过滤器插件安装

介绍

在成百上千万的数据中,判断某个数据是否存在时,使用hash、rbt等都会占用非常多的内存资源,这时候使用,可以节省非常多的内存。

下载布隆过滤器插件

gitHub下载最新版本

1
wget https://github.com/RedisBloom/RedisBloom/archive/v2.0.0.tar.gz

编译安装

解压并安装,生成.so文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sudo cp RedisBloom-2.0.0.tar.gz /usr/local/redis-5.0.5/modlues/
cd /usr/local/redis-5.0.5/modlues/
sudo tar -zxvf RedisBloom-2.0.0.tar.gz
cd RedisBloom-2.0.0/
make
ll

总用量 336
drwxrwxr-x. 2 root root 99 7月 21 16:52 contrib
-rw-rw-r--. 1 root root 405 6月 25 16:54 Dockerfile
drwxrwxr-x. 3 root root 241 6月 25 16:54 docs
-rw-rw-r--. 1 root root 5794 6月 25 16:54 LICENSE
-rw-rw-r--. 1 root root 2608 6月 25 16:54 Makefile
-rw-rw-r--. 1 root root 946 6月 25 16:54 mkdocs.yml
-rw-rw-r--. 1 root root 511 6月 25 16:54 ramp.yml
-rw-rw-r--. 1 root root 2467 6月 25 16:54 README.md
-rwxr-xr-x. 1 root root 308952 7月 21 16:52 redisbloom.so
drwxrwxr-x. 2 root root 48 7月 21 16:52 rmutil
drwxrwxr-x. 2 root root 4096 7月 21 16:52 src
drwxrwxr-x. 2 root root 217 6月 25 16:54 tests

安装

在redis配置文件(redis.conf)中加入该模块即可

1
2
3
4
5
6
7
8
cd /usr/local/redis-5.0.5/
sudo vim conf/redis-6379.conf

#####################MODULES#################### # Load modules at startup. If the server is not able to load modules

# it will abort. It is possible to use multiple loadmodule directives.

loadmodule /usr/local/redis-5.0.5/modlues/RedisBloom-2.0.0/redisbloom.so

启动

正常的启动Redis即可

1
sudo src/redis-server conf/redis-6379.conf

测试

1
2
3
4
5
6
7
8
9
10
redis-cli

127.0.0.1:6379> bf.add bloom user2
(integer) 1

127.0.0.1:6379> bf.exists bloom user2
(integer) 1

127.0.0.1:6379> bf.exists bloom user3
(integer) 0

限流插件Redis-cell

介绍

限制用户在指定时间内只可以访问一定次数。

下载

去官网下载最新版本Redis-cell

编译安装

1
2
解压
$ tar -zxf redis-cell-*.tar.gz

分布式锁

介绍

受保护的公共资源,需要协调。多个服务节点请求更新同一个库存数,数据库压力,如何转移压力。,需要一把分布式锁。缓存Key,失效以后,多个请求更新,只需要一个请求更新就可以了,需要一把分布式锁。

原子问题

Redis 实现锁
Redis2.8前,setNx + expire , set ex nx这是两个命令,两个命令间存在原子操作的问题
Redis2.8以后,set ex nx

1
2
3
4
set lock true ex 5 nx
OK
... do something critical ... # 10秒
del lock