python安装与使用redis的方法


Posted in Python onApril 19, 2016

本文实例讲述了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中转换角度为弧度的radians()方法
May 18 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
TensorFlow变量管理详解
Mar 10 Python
简单实现Python爬取网络图片
Apr 01 Python
Python字典对象实现原理详解
Jul 01 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
QML实现钟表效果
Jun 02 Python
python集合能干吗
Jul 19 Python
Python如何实现线程间通信
Jul 30 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
Python实现文件复制删除
Apr 19 #Python
利用Python获取赶集网招聘信息前篇
Apr 18 #Python
Python Sql数据库增删改查操作简单封装
Apr 18 #Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 #Python
python UNIX_TIMESTAMP时间处理方法分析
Apr 18 #Python
python动态加载包的方法小结
Apr 18 #Python
python实现按行切分文本文件的方法
Apr 18 #Python
You might like
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
javascript preload&lazy load
2010/05/13 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python文件比较示例分享
2014/01/10 Python
Python之py2exe打包工具详解
2017/06/14 Python
Python编程之序列操作实例详解
2017/07/22 Python
python简单实例训练(21~30)
2017/11/15 Python
详解python中list的使用
2019/03/15 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
Python3 assert断言实现原理解析
2020/03/02 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
什么是事务?事务有哪些性质?
2012/03/11 面试题
井冈山红色之旅感想
2014/10/07 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL