标签:修改 数据 常用 数值 djang 运行 重命名 local deb
1、下载,解压,安装
2、配置Redis启动脚本
1)将源码包的utils/redis_init_script拷贝到/etc/init.d/下,重命名为redis
修改内容:
2)将源码包下的redis.conf拷贝到/etc/redis/下
修改内容:
基本设置只有这两样,但是我现在只想把Redis做为缓存,不需要持久化功能,所以我还修改一些别的配置,以下的设置按需设置:
创建日志目录/usr/local/redis/log。
3、加入系统服务
chkconfig删除服务是:chkconfig --del [name],例如chkconfig --del redis。
4、启动,停止Redis
如果/etc/redis/redis.conf中的bind设置的是公网IP,使用service redis stop是关闭不了的,这个时候我都是查出进程号,直接kill掉。
因为stop命令执行的是/etc/init.d/redis中的stop函数。
其中
是停止Redis任务,而$CLIEXEC即redis-cli命令,忽略-h参数的话,默认是连接127.0.0.1,所以如果/etc/redis/redis.conf中的bind不是127.0.0.1,那么就需要修改/etc/init.d/redis文件了。 修改如下:
但是我一般自己测试用的话,都懒得改,直接kill掉。
5、通过命令行客户端访问
1、安装redis库:pip3 install redis
redis提供两个类Redis和StrictRedis用于实现Redis服务器的命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。所以常用Redis类。
redis连接实例是线程安全的,可以直接将redis连接实例设置为一个全局变量。
2、连接Redis服务器
需要加上decode_responses=True, 这样写入的value是str类型,为False的话写入的是字节类型。
3、连接池
参数max_connections:设置最大连接数
这里有一篇文档,是分析redis.ConnectionPool()连接池源码的,感兴趣的话,可以看看:www.u3v3.com/ar/1346。
4、将连接池设置成单例模式
pool.py文件
然后,其他文件,导入pool变量,这样就可以实现一个单例的连接池了。
test.py文件
具体的Redis的数据类型,以及相应的方法,自行查看。
1、安装django-redis: pip3 install django-redis
2、设置settings.py文件 添加
其中,"LOCATION"表示连接字符串,有三种方式设置:
redis://[:password]@localhost:6379/0
rediss://[:password]@localhost:6379/0
unix://[:password]@/path/to/spcket.sock?db=0
但也有文档说,某些环境下连接密码放在url是不安全的,这时你可以选择忽略密码或者使用"OPTIONS"设置,所以按需选择吧。
"CONNECTION_POOL_KWARGS": 连接池设置
"max_connections": 最大连接数
"decode_responses": 以字符串的形式写入Redis,为False的话写入字节类型。
django-redis使用redis-py的连接池接口,redis-py默认不会关闭连接,尽可能重用连接, redis-py实际就是redis库的Redis中的连接池,上一节中提及,说明连接池原理是一样的。
3、Redis存取
有两种方式:
1)使用django.core.cache.cache类,这个类有巨坑!
这段代码运行前,需要将settings.py文件中CACHES中的decode_responses参数设置为False,具体原因我没深究。
运行这段代码没任何问题,能写入能读取。但是!!!如果这个key-value值是别的客户端写入的呢?假如我通过redis-cli命令行工具添加了key-value,那通过cache.get(key)是取不到的,当然这段代码添加的skey-svalue在客户端执行get skey也是取不到的。
来,我们通过命令行工具,查看这段代码添加的key-value,如下:
...原来通过cache.set(key, value),会在key的前面拼接一个字符串":1:",也不知道为啥。所以我说这个cache是隐形巨坑。
2)通过get_redis_connection()
执行后,利用redis-cli查看一下key值:
现在key值不会被拼接字符串了,所以我常用这个函数。
使用get_redis_connection()最好把settings.py文件中CACHES中的decode_responses参数设置为True, 同时conn = get_redis_connection(‘default‘)中 的‘default‘是settings.py文件中CACHES设置的‘default‘。
标签:修改 数据 常用 数值 djang 运行 重命名 local deb
原文地址:https://www.cnblogs.com/linwenbin/p/11485594.html