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

http://www.leoox.com/?p=304

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的更多相关文章

  1. python访问mysql和redis

    1. 修改mysql配置文件 修改bind-address=0.0.0.0(允许通过远程网络连接) 2. 修改redis配置文件 修改bind-address=0.0.0.0(允许通过远程网络连接), ...

  2. win10下使用python访问vmbox中的redis

    了解到redis没有windows的官方支持,所以在vmbox中的ubuntu装了redis#在ubuntu中 #搜索redis相关软件信息 apt-cache search ^redis #不清楚为 ...

  3. python之redis和memcache操作

    Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...

  4. Python操作Redis、Memcache、RabbitMQ、SQLAlchemy

    Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...

  5. python之redis

    Redis简单介绍 如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:1 Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构 ...

  6. 使用 python 操作 redis

    1.安装pyredis (1)使用 # easy_install redis (2)直接编译安装 #wget https://pypi.python.org/packages/source/r/red ...

  7. 使用Python操作Redis

    1. 安装pyredis 首先安装pip   1 2 3 4 5 6 7 8 <SHELL># apt-get install python-pip ...... <SHELL> ...

  8. python使用redis

    版本: python 3.5 redis 3.0.1(redis的安装 pip install redis) 1.连接 import redis r = redis.Redis(host='192.1 ...

  9. python对redis的常用操作 上 (对列表、字符串、散列结构操作)

    这里的一切讨论均基于python的redis-py库. 安装使用: pip install redis 然后去获取一个redis客户端: redis_conn = redis.Redis(host=R ...

随机推荐

  1. VS生成项目时,有些文件无法复制到输出目录的解决办法

    有时候,我们在生成项目时,发现有些文件如:.jpg的图片文件,无法复制到输出目录中,此时会非常纠结,反复的清理项目,重新生成,依旧不能解决此问题.后来我打开.csproj的项目工程文件时,经过对比发现 ...

  2. jquery easyui datagrid设置行样式 不可删除某行

    rowStyler: function (index,row) { if (parseInt(row.ksrs) > 0) { return 'color:red'; } }, onLoadSu ...

  3. WEB中间件--tomcat爆破,burp和python脚本

    1.tomcat 用burpsuit进行弱口令爆破 先抓包 发送到inturder payload type 选择custom iterater 第一个payload选用户名文件,第二个payload ...

  4. map内置函数、lambda表达式、快捷生成想要的列表、filter内置函数

      map函数                             语法 map(function, iterable, ...) 参数 function -- 函数,有两个参数 iterable ...

  5. 【python标准库模块一】时间模块time学习

    本文介绍python的标准库模块time的常见用法 时间模块time 导入时间模块 import time 得到时间戳,这是统计从1970年1月1日0点0分到现在经过了多少秒,一般用于加减法一起用,比 ...

  6. css 中calc无效属性值问题

    width:calc(50%-20px); 这样书写是无效的因为calc中计算的两个因子同运算符号之间必须存在空格:

  7. 存出和载入Docker镜像

    存出镜像 如果要导出镜像到本地文件,可以使用 docker save 命令. $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL ...

  8. Android仅2步实现 滚粗 汉堡导航栏效果~ 全新底部导航交互(滑动隐藏)

    本文同步自wing的地方酒馆 布吉岛大家有木有看这一篇文章,再见,汉堡菜单,我们有了新的 Android 交互设计方案 本库下载地址:https://github.com/githubwing/Bye ...

  9. Android简易实战教程--第四十一话《vitamio网络收音机》

    在Android初级教程专栏里面,介绍了Android原生的VideoView和vitamio框架Android视频媒体相关,VideoView和开源框架vitamio.并演示了播放网络视频的对应的D ...

  10. 剑指Offer——顺丰笔试题+知识点总结

    剑指Offer--顺丰笔试题+知识点总结 情景回顾 时间:2016.10.16 19:00-20:40 地点:山东省网络环境智能计算技术重点实验室 事件:顺丰笔试 知识点总结 快排 霍尔排序(快排) ...