python访问redis
python访问redis
1 Linux上安装redis
a) 下载
$ wget http://download.redis.io/releases/redis-3.0.5.tar.gz
b) 编译
# yum install gcc tcl # tar -zxf redis-3.0.5.tar.gz # cd redis-3.0.5 # make # make test # sudo make install
这样可执行文件redis-server等就从redis-3.0.5/src拷贝到/usr/local/bin
c) 启动服务(6379端口要打开)
$ redis-server
或
$ redis-server /path/to/redis.conf
1428:M 04 Feb 11:47:33.817 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1428:M 04 Feb 11:47:33.817 # Server started, Redis version 3.0.5
1428:M 04 Feb 11:47:33.818 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1428:M 04 Feb 11:47:33.818 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
d) 服务器配置,以除去上面的警告
以root用户操作
1) 修改内核参数: somaxconn
该内核参数默认值一般是128,对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。
# echo 2048 > /proc/sys/net/core/somaxconn
重启后保存:
在/etc/sysctl.conf中添加如下
net.core.somaxconn = 2048
然后在终端中执行
# sysctl -p
2) 修改vm.overcommit_memory
overcommit_memory 指定了内核针对内存分配的策略,其值可以是0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
# vi /etc/sysctl.conf
增加下面一行:
vm.overcommit_memory=1
设置重启后保持, 执行命令:
# sysctl vm.overcommit_memory=1
3) transparent_hugepage
禁用透明巨页内存配置以提高性能
查看当前状态:
$ cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
参数说明
never 关闭,不使用透明内存
alway 尽量使用透明内存,扫描内存,有512个 4k页面可以整合,就整合成一个2M的页面
madvise 避免改变内存占用
禁用透明巨页内存:
# echo never >/sys/kernel/mm/transparent_hugepage/enabled # cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
永久禁用, 将命令加入到rc.local中:
# vi rc.local
... # redis required never for transparent_hugepage if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi exit 0
e) redis.conf配置
参考下面的redis.conf的配置项: redis配置详解
http://blog.csdn.net/ithomer/article/details/9232891
2 redis-py
redis-py 这是 Redis 目前最成熟的 Python 客户端开发包。
redis 主页:
https://github.com/andymccurdy/redis-py
a) 下载源码
$ git clone https://github.com/andymccurdy/redis-py.git
b) 安装
$ cd redis-py $ sudo python redis install
3 hiredis
hiredis是redis数据库的C接口,目前只能在linux下使用,几个基本的函数就可以操作redis数据库了。hiredis 是 Redis 官方指定的 C 语言客户端开发包,支持 Redis 完整的命令集、管线以及事件驱动编程。
hiredis主页:
https://github.com/redis/hiredis
a) 下载安装
$ git clone https://github.com/redis/hiredis.git $ cd hiredis $ make $ sudo make install
例子:
http://blog.csdn.net/mfc_vc_andy/article/details/8095839
4 hiredis-py
python对hiredis的包装类。
主页:
https://github.com/redis/hiredis-py
a) 下载
$ wget https://pypi.python.org/packages/source/h/hiredis/hiredis-0.2.0.tar.gz
b) 安装
$ tar zxf hiredis-0.2.0.tar.gz $ cd hiredis-0.2.0 $ python setup.py build $ sudo python setup.py install
5 python操作redis
http://blog.csdn.net/chosen0ne/article/details/7319807
http://blog.csdn.net/chenggong2dm/article/details/6102540
6 优雅关闭redis-server
$ redis-cli -h 127.0.0.1 -p 6379 shutdown
7 redis-server启用密码及简单例子
a) 复制redis.conf到/etc/
b) 创建redis数据库存储目录
$ sudo mkdir /var/redis
c) 修改/etc/redis.conf
$ sudo vi redis.conf
仅仅修改的内容如下:
daemonize yes loglevel warning logfile /var/log/redis.log dir /var/redis/ requirepass Abc123
d) 启动和关闭服务
$ sudo redis-server /etc/redis.conf 带密码关闭服务: $ redis-cli -h 127.0.0.1 -p 6379 -a Abc123 shutdown
e) 客户端python
此时客户端需要使用带密码连接服务器:
import redis r=redis.StrictRedis(host="127.0.0.1", port=6379, db=0, password="Abc123") r.set("city", "shanghai") r.get("city")
给key设置过期时间。比如我们仅仅保存60秒的数据,可以这样设置:
r.expire("city", 60)
紧接着访问它:
r.get("city") shanghai
过60秒再访问:
r.get("city")
没有了。
8 附录
更详细的例子参考:
https://github.com/andymccurdy/redis-py
redis的完整的参考:
http://www.redis.net.cn/tutorial/3505.html
python访问redis的更多相关文章
- python访问mysql和redis
1. 修改mysql配置文件 修改bind-address=0.0.0.0(允许通过远程网络连接) 2. 修改redis配置文件 修改bind-address=0.0.0.0(允许通过远程网络连接), ...
- win10下使用python访问vmbox中的redis
了解到redis没有windows的官方支持,所以在vmbox中的ubuntu装了redis#在ubuntu中 #搜索redis相关软件信息 apt-cache search ^redis #不清楚为 ...
- python之redis和memcache操作
Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...
- Python操作Redis、Memcache、RabbitMQ、SQLAlchemy
Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...
- python之redis
Redis简单介绍 如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:1 Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构 ...
- 使用 python 操作 redis
1.安装pyredis (1)使用 # easy_install redis (2)直接编译安装 #wget https://pypi.python.org/packages/source/r/red ...
- 使用Python操作Redis
1. 安装pyredis 首先安装pip 1 2 3 4 5 6 7 8 <SHELL># apt-get install python-pip ...... <SHELL> ...
- python使用redis
版本: python 3.5 redis 3.0.1(redis的安装 pip install redis) 1.连接 import redis r = redis.Redis(host='192.1 ...
- python对redis的常用操作 上 (对列表、字符串、散列结构操作)
这里的一切讨论均基于python的redis-py库. 安装使用: pip install redis 然后去获取一个redis客户端: redis_conn = redis.Redis(host=R ...
随机推荐
- Axis2 webservice入门--Webservice的发布与调用
一.Webservice发布 参考 http://www.cnblogs.com/demingblog/p/3263576.html 二.webservice 调用 部分参考:http://www.c ...
- Linux部分常用命令整理
./ 相当于双击 [oracle@linux01 ~]$ PWD 查看绝对路径 [oracle@linux01 ~]$ cd - 返回上一次操作的目录 [oracle@linux01 ~]$ cd . ...
- Java中next()和nextLine()
next()读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键.Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键 ...
- Docker配置 DNS
Docker 没有为每个容器专门定制镜像,那么怎么自定义配置容器的主机名和 DNS 配置呢? 秘诀就是它利用虚拟文件来挂载到来容器的 3 个相关配置文件. 在容器中使用 mount 命令可以看到挂载信 ...
- PHP 序列化/反序列化的方法函数
我们在开发的过程中常常遇到需要把对象或者数组进行序列号存储,反序列化输出的情况.特别是当需要把数组存储到mysql数据库中时,我们时常需要将数组进行序列号操作. 序列化(串行化):是将变量转换为可保存 ...
- MyBatis 查询映射自定义枚举
背景 MyBatis查询若想映射枚举类型,则需要从 EnumTypeHandler 或者 EnumOrdinalTypeHandler 中选一个来使用 ...
- linux:关于Linux系统中 CPU Memory IO Network的性能监测
我们知道:系统优化是一项复杂.繁琐.长期的工作.通常监测的子系统有以下这些:CPUMemoryIO Network 下面是常用的监测工具 Linux 系统包括很多子系统(包括刚刚介绍的CPU,Memo ...
- 20160216.CCPP体系详解(0026天)
程序片段(01):01.MemCpy.c 内容概要:内存拷贝 #include <stdio.h> #include <stdlib.h> #include <memor ...
- android 自定义view之选座功能
效果图: 界面比较粗糙,主要看原理. 这个界面主要包括以下几部分 1.座位 2.左边的排数 3.左上方的缩略图 4.缩略图中的红色区域 5.手指移动时跟随移动 6.两个手指缩放时跟随缩放 主要技术点 ...
- 【mybatis深度历险系列】mybatis中的输入映射和输出映射
在前面的博文中,小编介绍了mybatis的框架原理以及入门程序,还有mybatis中开发到的两种方法,原始开发dao的方法和mapper代理方法,今天博文,我们来继续学习mybatis中的相关知识,随 ...