连接redis数据库可以是redis的可视化软件RedisDesktopManager,或者用终端命令行redis-cli -h ip -p 端口 -a 密码
,在python代码中主要有三种方式连接redis。
方式一:用redis模块连接
import redis
# 直接连接redis
conn = redis.Redis(host='10.211.55.28', port=6379, password='foobared', encoding='utf-8')
# 设置键值:15131255089="9999" 且超时时间为10秒(值写入到redis时会自动转字符串)
conn.set('15131255089', 9999, ex=10)
# 根据键获取值:如果存在获取值(获取到的是字节类型);不存在则返回None
value = conn.get('15131255089')
print(value)
上面python操作redis的示例是以直接创建连接的方式实现,每次操作redis如果都重新连接一次效率会比较低,建议使用redis连接池来替换,连接池时专门用来处理并发请求,来一个请求后台直接能给出池里的连接对象来操作数据库
,例如:
方式二:redis模块 + 连接池(推荐方式)
import redis
# 创建redis连接池(默认连接池最大连接数 2**31=2147483648)
pool = redis.ConnectionPool(host='10.211.55.28', port=6379, password='foobared', encoding='utf-8', max_connections=1000)
# 去连接池中获取一个连接
conn = redis.Redis(connection_pool=pool)
# 设置键值:15131255089="9999" 且超时时间为10秒(值写入到redis时会自动转字符串)
conn.set('name', "xxx", ex=10)
# 根据键获取值:如果存在获取值(获取到的是字节类型);不存在则返回None
value = conn.get('name')
print(value)
方式三:使用django-redis,在django中方便的使用redis
(利用django进行web开发时建议使用)。
第一步
pip3 install django-redis
第二步
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://10.211.55.28:6379", # 安装redis的主机的 IP 和 端口
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {
"max_connections": 1000,
"encoding": 'utf-8'
},
"PASSWORD": "foobared" # redis密码
}
},
# 如果你需要用连接池连上多台redis节点,以后你在做主从读写分离,就会用到这个,get_redis_connection中的参数,就是
# 按照这个redis名,default或者master在视图中就能直接使用这里连接好的
"master": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://10.211.55.28:6379", # 安装redis的主机的 IP 和 端口
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {
"max_connections": 1000,
"encoding": 'utf-8'
},
"PASSWORD": "foobared" # redis密码
}
}
}
第三步,在视图中使用
from django.shortcuts import HttpResponse
from django_redis import get_redis_connection
def index(request):
#去连接池中获取一个连接,默认就是default,可以直接()
conn = get_redis_connection("default")
conn.set('nickname', "xxx", ex=10)
value = conn.get('nickname')
print(value)
return HttpResponse("OK")