redis服务搭建
redis 概念:
redis是一个key-value系统,与memcached类似,他支持的存储类型较多,包括 string ,list,set(集合),zset(有序集合),hash(哈西类型)。这些数据类型都支持 push/pop、add/remove、以及 取交集 ,并交集,差交集。
redis支持各种不同方式的排序。与memcached一样数据都是存放在内存中,并周期的存入磁盘或者把修改操作写入追加的记录文件,还能实现master-slave同步(主从)。
redis是一个高效率key-value数据库,redis的出现补充了 memcached的key-value 的存储不足。在部分场合可以对关系数据库起到了很好的补充作用。
redis支持主从同步,数据可以从主服务向任意从服务进行同步,从服务可以关联其他的主服务器。
它提供了 java ,c/c++,c#,PHP,JavaScript,Perl,object-C,Python,ruby,Erlang等客户端。
linux系统下搭建redis:
首先下载:
cd redis-3.0.1
make
cd /usr/local/src/redis-3.0.1/src
执行:
ps -ef|grep redis
修改

该选项支持后台启动。
最后执行:
./redis-server /usr/local/redis/redis-3.0.1/redis.conf
查看进程:

安装成功。
slave设置只需要在 redis.conf 末尾添加 slaveof 192.168.1.200 6379 然后完成。
redis 的连接池与管道符
redis-py 使用connect pool 管理redis server的所有连接,避免每次建立释放的开销,默认每个redis实例都有自己的连接池。可以直接建立连接池然后作为参数redis,这样可以实现多个redis共享一个连接池。
与之前一样设置一个连接池函数:
import redis def redis_connect_pool(): redis_connect = { "host": "192.168.1.200", "port": 6379 } pool = redis.ConnectionPool(**redis_connect) r1 = redis.Redis(connection_pool=pool) return r1
使用方法:
if __name__=="__main__": r2=redis_connect_pool() r2.set("lll","njiokm") cc=r2.get("lll") print (cc)
输出结果:
C:\Python27\python.exe E:/untitled/redis/R1.py
njiokm
set函数的结构:
#----set函数 分两个参数set(key:value) rr.set('lll','dddd') #----set.key 表示获取key值 print (rr.keys()) #----set.get 表示获取key对应的value值 print (rr.get('lll'))
redis管道概念:
redis-py默认执行每次连接都会创建和断开一次连接操作,如果一次请求中想要执行多个命令需要使用pipline并且默认pipline是原子操作。
使用管道与使用set发送命令的关系:
(1)两者实现内容相同即同时使用set发送多条命令与使用管道发送多条命令返回结果一致。
(2)两者发送机制不同使用set发送命令是发送一次返回一次结果(如发送四次返回四次即产生八次报文),但是管道是将所有命令一次性全部发送然后全部返回。(发送命令越多占的内存越多)
管道节省资源
直观显示:
#---管道符函数 def test_pip(r): pipe=r.pipeline(transaction=True) for i in xrange(1,1000): key="key"+ str(i) values="val"+ str(i) pipe.set(key,values) pipe.execute() #----set函数 def test_set(r): for i in xrange(1,1000): key="key1"+ str(i) values="val1"+ str(i) r.set(key,values) if __name__=="__main__": rr1=redis_connect_pool() rr2=redis_connect_pool() start=datetime.datetime.now() test_pip(rr1) end=datetime.datetime.now() #----调用微秒 t_time=(end-start).microseconds print ("pip time is {0}".format(t_time)) start1=datetime.datetime.now() test_set(rr2) end1=datetime.datetime.now() t_time1=(end1-start1).microseconds print ("set time is {0}".format(t_time1))
执行结果:
C:\Python27\python.exe E:/untitled/redis/R1.py pip time is 17000 set time is 221000 Process finished with exit code 0
相比set函数使用管道节省了时间。
浙公网安备 33010602011771号