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

python訪问redis的更多相关文章

  1. Python 訪问 LinkedIn (API)

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-16 @author: guaguastd @name: l ...

  2. Python 訪问Google+ (http)

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-28 @author: guaguastd @name: l ...

  3. python 訪问webservice

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  4. Kivy A to Z -- 怎样从python代码中直接訪问Android的Service

    在Kivy中,通过pyjnius扩展能够间接调用Java代码,而pyjnius利用的是Java的反射机制.可是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了b ...

  5. python文件和文件夹訪问File and Directory Access

    http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...

  6. redis实现訪问频次限制的几种方式

    结合上一篇文章<redis在学生抢房应用中的实践小结>中提及的用redis实现DDOS设计时遇到的expire的坑.事实上,redis官网中对incr命令的介绍中已经有关于怎样用redis ...

  7. [Python爬虫] Selenium自己主动訪问Firefox和Chrome并实现搜索截图

    前两篇文章介绍了安装.此篇文章算是一个简单的进阶应用吧.它是在Windows下通过Selenium+Python实现自己主动訪问Firefox和Chrome并实现搜索截图的功能. [Python爬虫] ...

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

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

  9. 在nginx中使用lua直接訪问mysql和memcaced达到数据接口的统一

    安装nginx參见<nginx+lua+redis构建高并发应用> 让nginx 中的nginx_lua_module支持mysql 和memcache 下载 https://github ...

随机推荐

  1. Codeforces 898E Squares and not squares

    题目大意 给定 $n$($n$ 是偶数,$2\le n\le 2\times 10^{5}$)个非负整数 $a_1,\dots, a_n$($a_i\le 10^9$). 要求将其中 $n/2$ 个数 ...

  2. bzoj 3190 [JLOI2013]赛车 半平面交+细节处理

    题目大意 这里有一场赛车比赛正在进行,赛场上一共有N辆车,分别称为g1,g2--gn.赛道是一条无限长的直线.最初,gi位于距离起跑线前进ki的位置.比赛开始后,车辆gi将会以vi单位每秒的恒定速度行 ...

  3. Pebbles(hdu 2167)

    题意:给定一个N*N的方格,让你在里面取出一些数使其和最大,要求每一个数不能与其相邻的8个数同时取出. /* 和hdu1565差不多,只不过在更新的时候考虑斜上方的格子对该格子的影响. */ #inc ...

  4. 【BZOJ4034】T2(树链剖分)

    题意: 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所有点的点权都增 ...

  5. C语言实验设计

    一.实验题目,设计思路,实现方法 7-4 计算分段函数[2](10 分) 本题目要求计算下列分段函数f(x)的值: 注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂. ...

  6. Redis监控工具—Redis-stat、RedisLive

    Redis监控工具—Redis-stat.RedisLive https://blog.csdn.net/u010022051/article/details/51104681

  7. AC日记——线段树练习5 codevs 4927

    4927 线段树练习5  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 有n个数和5种操作 add a b ...

  8. js-jquery 中$.ajax -浅显接触

    工作了将近2年,终于开始自己写ajax了!!!真紧张的! 当年培训时就没有学ajax,就让我们自己看看,我是那种主动学习的人吗?不是!!!所以搞不懂ajax!!!!! 在工作中,数据的绑定我们之前都是 ...

  9. 牛客网 Wannafly挑战赛9 A.找一找-数据处理

    好几天没好好学习了(咸鱼晒干了) 把稍微没那么咸鱼的几天前的一场牛客网的比赛稍微看了一下,菜的要死,这一场大数的比较多,都死了. A.找一找 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...

  10. 利用github搭建个人网站

    1.注册一个github  https://github.com/ 2.新建一个仓库  仓库名 用 Owner.github.io 的格式,然后点击创建 3.源码上传至github 安装github桌 ...