搭建你的缓存服务器Redis
知识点
- 使用Docker技术搭建Redis服务器
官网
Docker Hub
https://hub.docker.com/_/redis/
实战演习
# 拉取Redis镜像
$ sudo docker pull redis:alpine
$ sudo docker image ls 或者 docker images
# 建立Redis永久化卷标
$ sudo docker volume create --name v_redis_data
$ sudo docker volume ls
$ sudo docker run -d --name redis -v v_redis_data:/data -p 6379:6379 \
redis:alpine redis-server --appendonly yes --requirepass redis@2022
$ sudo docker container ls 或者 docker ps
# 确认本地打开的tcp端口号
$ netstat -nltp 或者 ss -lt4
$ sudo docker exec -it redis top
# 启用客户端连接redis服务
$ sudo apt install redis-tools
$ redis-cli -h 127.0.0.1 -p 6379 -a redis@2022
127.0.0.1:6379> ping
127.0.0.1:6379> info
127.0.0.1:6379> set data01 "helo, redis."
127.0.0.1:6379> get data01
127.0.0.1:6379> set data02 "https://262235.xyz"
127.0.0.1:6379> get data02
127.0.0.1:6379> keys *
127.0.0.1:6379> exit
Python 要使用 redis,需要先安装 redis 模块
pip3 install redis
测试是否安装成功:
>>> import redis
>>> r = redis.StrictRedis(host='localhost', port=6379, db=0)
>>> r.ping()
True
>>> r.info()
{ 'redis_version': '6.2.6',
'os': 'Linux 5.10.0-9-amd64 x86_64',
... 'tcp_port': 6379, ... }
redis 提供两个类 Redis
和 StrictRedis
, StrictRedis 用于实现大部分官方的命令,Redis 是 StrictRedis 的子类,用于向后兼用旧版本。
redis 取出的结果默认是字节,我们可以设定 decode_responses=True
改成字符串。
import redis
r = redis.Redis(host='localhost', port=6379, password='密码') # decode_responses=True 输出字符串
r.set('webapi', '262235.xyz/ip')
print(r.get('webapi'))
# 输出 b'262235.xyz/ip'
连接池
redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接的开销。
默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数 Redis,这样就可以实现多个 Redis 实例共享一个连接池。
import os, redis
pool = redis.ConnectionPool(host='localhost', port=6379, db=0,
password='密码', decode_responses=True)
r = redis.Redis(connection_pool=pool)
r.set('webapi', '262235.xyz/ip')
print(r.get('webapi'))
cmd = 'curl -sL ' + r.get('webapi')
os.system(cmd)
# 输出 262235.xyz/ip 和 当前ip