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 client开发包。

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 语言client开发包,支持 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

p=304">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启用password及简单样例

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

带password关闭服务:
$ redis-cli -h 127.0.0.1 -p 6379 -a Abc123 shutdown

e) clientpython

此时client须要使用带password连接服务器:

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

时间: 2024-10-01 05:15:30

python訪问redis的相关文章

python 訪问webservice

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">如今最流行的就是suds了,可是里面仍然有很多bug未修复.也好像没有人更新了</span> import sys from suds.client import Client sys.setrecursionlimit(1500) test_url = 'http://we

Linux防火墙限制指定port仅仅能由指定IP訪问

须要对redis的端口做限制,仅仅能让公司内指定IP的机器訪问 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT -A INPUT -m state --s

通过rinetd实现port转发来訪问内网的服务

一.   问题描写叙述 通过外网来訪问内网的服务 二.   环境要求 须要有一台能够外网訪问的机器做port映射.通过数据包转发来实现外部訪问阿里云的内网服务 三.   操作方法 做port映射的方案有非常多.Linux下的ssh tunnel和windows下的portmap等等,这里分享一个更稳定和简单的小工具rinetd 四.   下载安装 $ wget http://www.boutell.com/rinetd/http/rinetd.tar.gz $ tar -xvf rinetd.t

使用Hadoop ACL 控制訪问权限

使用Hadoop ACL 控制訪问权限 一.HDFS訪问控制 hdfs-site.xml设置启动acl <property> <name>dfs.permissions.enabled</name> <value>true</value> </property> <property> <name>dfs.namenode.acls.enabled</name> <value>true&l

怎样訪问pcie整个4k的配置空间

眼下用于訪问PCIe配置空间寄存器的方法须要追溯到原始的PCI规范. 为了发起PCI总线配置周期,Intel实现的PCI规范使用IO空间的CF8h和CFCh来分别作为索引和数据寄存器,这样的方法能够訪问全部PCI设备的255 bytes配置寄存器.Intel Chipsets眼下仍然支持这样的訪问PCI配置空间的方法. PCIe规范在PCI规范的基础上,将配置空间扩展到4K bytes,至于为什么扩展到4K,详细能够參考PCIe规范,这些功能都须要配置空间.原来的CF8/CFC方法仍然能够訪问全

ios 7.1 7.1.1 半完美越狱后 电脑訪问手机越狱文件夹的方法

7.1和7.1.1因为越狱不成熟,半完美越狱后电脑上无法訪问系统越狱文件夹,如var usr 等等. 今天有些意外地发现,能够在电脑上使用手机的越狱文件夹我手机 i4 7.1.1 联通 半完美越狱,没装Afc2Add,也没装Appsync 附上  --->我的半完美越狱过程 好了,以下直接正题 一.前提,必须安装ifile!     打开ifile,并转到 /var/mobile/media 文件夹下,然后点击右上角的 [ 编辑 ]如图: 二.点左下角的 + 号创建,如图: 三.点 [ 类型],

C++ 訪问控制权限图解

基类訪问权限 类继承方式 子类訪问权限           public   public   protected public protected   private   No Access   public   protected   protected protected protected   private   No Access   public   private   protected private private   private   No Access          

NGINX之——配置HTTPS加密反向代理訪问–自签CA

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46695495 出于公司内部訪问考虑,採用的CA是本机Openssl自签名生成的,因此无法通过互联网工信Root CA验证,所以会出现该站点不受信任或安全证书无效的提示.直接跳过,直接訪问就可以! HTTPS的原理和訪问过程: server必要条件 一个server私钥 KEY文件 一张与server域名匹配的CA证书(公钥,依据私钥key生成) 訪问过程: 1,client浏览器

Mac使用Docker-machine訪问docker publish port

Step 1.Export the port in your container(docker-machine or boot2docker) 首先,要保证你公布port的image已经run起来了.假设你是通过Dockerfile build起来的image.注意在image里面加上以下的一段话: Expose 80 假设你须要公布其它port,仅仅需把80改变就可以. Expose这个命令的意思是docker image公布一个port. 然后你须要将基于这个容器的image指定一个port