本文实例讲述了python安装与使用redis的方法。分享给大家供大家参考,具体如下:
1、安装
好吧,我承认我只会最简单的安装:
sudo apt-get install redis-server
python 支持包: (其实就一个文件,搞过来就能用)
sudo apt-get install python-redis
2、配置
配置一下吧,默认配置文件在: \”/etc/redis/redis.conf\”
绑定ip:
\"bind 127.0.0.1″ -> \"bind 10.0.1.7″
将磁盘同步改为 不同步或每秒同步,一直同步的话太慢了:
\"appendfsync always\" -> \"appendfsync no\"
检查一下后台执行是否打开:
\”daemonize yes\”
或者其他你想设置的,例如:
连接超时时间 : \”timeout 300″
运行级别: \”loglevel notice\” (个人认为默认的这个就挺好,非出现大异常,不用改为debug )
3、使用
#! /usr/bin/env python #coding=utf-8 import redis print redis.__file__ # 连接,可选不同数据库 r = redis.Redis(host=\'10.0.1.7\', port=6379, db=1) # ------------------------------------------- # 看信息 info = r.info() for key in info: print \"%s: %s\" % (key, info[key]) # 查数据库大小 print \'\\ndbsize: %s\' % r.dbsize() # 看连接 print \"ping %s\" % r.ping() # 选数据库 #r.select(2) # 移动数据去2数据库 #r.move(\'a\',2) # 其他 #r.save(\'a\') # 存数据 #r.lastsave(\'a\') # 取最后一次save时间 #r.flush() #刷新 #r.shutdown() #关闭所有客户端,停掉所有服务,退出服务器 # #-------------------------------------------- # 它有四种类型: string(key,value)、list(序列)、set(集合)、zset(有序集合,多了一个顺序属性) # 不知道你用的哪种类型? # print r.get_type(\'a\') #可以告诉你 # ------------------------------------------- # string操作 print \'-\'*20 # 塞数据 r[\'c1\'] = \'bar\' #或者 r.set(\'c2\',\'bar\') #这里有个 getset属性,如果为True 可以在存新数据时将上次存储内容同时搞出来 print \'getset:\',r.getset(\'c2\',\'jj\') #如果你想设置一个递增的整数 每执行一次它自加1: print \'incr:\',r.incr(\'a\') #如果你想设置一个递减的整数 please: print \'decr:\',r.decr(\'a\') # 取数据 print \'r[\'\']:\',r[\'c1\'] #或者 print \'get:\',r.get(\'a\') #或者 同时取一批 print \'mget:\',r.mget(\'c1\',\'c2\') #或者 同时取一批 它们的名字(key)很像 而恰好你又不想输全部 print \'keys:\',r.keys(\'c*\') #又或者 你只想随机取一个: print \'randomkey:\',r.randomkey() # 查看一个数据有没有 有 1 无0 print \'existes:\',r.exists(\'a\') # 删数据 1是删除成功 0和None是没这个东西 print \'delete:\',r.delete(\'cc\') # 哦对了 它是支持批量操作的 print \'delete:\',r.delete(\'c1\',\'c2\') # 其他 r.rename(\'a\',\'c3\') #呃.改名 r.expire(\'c3\',10) #让数据10秒后过期 说实话我不太明白么意思 r.ttl(\'c3\') #看剩余过期时间 不存在返回-1 #-------------------------------- # 序列(list)操作 print \'-\'*20 # 它是两头通的 # 塞入 r.push(\'b\',\'gg\') r.push(\'b\',\'hh\') # head 属性控制是不是从另一头塞 r.push(\'b\',\'ee\',head=True) # 看长度 print \'list len:\',r.llen(\'b\') # 列出一批出来 print \'list lrange:\',r.lrange(\'b\',start=0,end=-1) # 取出一位 print \'list index 0:\',r.lindex(\'b\',0) # 修剪列表 #若start 大于end,则将这个list清空 print \'list ltrim :\',r.ltrim(\'b\',start=0,end=3) #只留 从0到3四位 # 排序 # 这可是个大工程 #-------------------------------- # 集合(set)操作 # 塞数据 r.sadd(\'s\', \'a\') # 判断一个set长度为多少 不存在为0 r.scard(\'s\') # 判断set中一个对象是否存在 r.sismember(\'s\',\'a\') # 求交集 r.sadd(\'s2\',\'a\') r.sinter(\'s1\',\'s2\') #求交集并将结果赋值 r.sinterstore(\'s3\',\'s1\',\'s2\') # 看一个set对象 r.smembers(\'s3\') # 求并集 r.sunion(\'s1\',\'s2\') # 阿 我想聪明的你已经猜到了 #求并集 并将结果返回 r.sunionstore(\'ss\',\'s1\',\'s2\',\'s3\') # 求不同 # 在s1中有,但在s2和s3中都没有的数 r.sdiff(\'s1\',\'s2\',\'s3\') r.sdiffstore(\'s4\',\'s1\',\'s2\')# 这个你懂的 # 取个随机数 r.srandmember(\'s1\') #------------------------------------- #zset 有序set #\'zadd\', \'zcard\', \'zincr\', \'zrange\', \'zrangebyscore\', \'zrem\', \'zscore\' # 分别对应 #添加, 数量, 自加1,取数据,按照积分(范围)取数据,删除,取积分 # 我靠 你玩死我了 redis! # 今天在实验中,我尝试插入一条zset类型数据: r1.zset(u\'www.liyi99.com\',\'liwu\',3) # 插入成功 # 我继续插入 r1.zset(u\'www.liyi99,com\',u\'\\u9001\\u793c\',5) #报错: #UnicodeDecodeError: \'ascii\' codec can\'t decode byte 0xe4 in position 0: ordinal not in range(128) #这次插入的是礼物的中文词 unicode编码 #为什么会失败那,这条数据是我从redis里面取出来然后没做任何修改再插入的阿 #redis返回和接受的数据类型都是unicode编码的阿 #好吧,我们再次插入试试 #再次插入 r1.zset(\'www.liyi99.com\',u\'\\u9001\\u793c\',5) #成功了 #插入 r1.zset(\'www.liyi99.com\',\'礼物\',5) #依然成功,跟入redis.py 1024行 return self.send_command(\'ZADD %s %s %s\\r\\n%s\\r\\n\' % ( key, score, len(member), member)) # 哦 万恶的编码转换! #不过取的时候,不论第一个是何种类型的数据都无关系
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。