python redis使用
时间:2019-08-24
本文章向大家介绍python redis使用,主要包括python redis使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
连接
''' 连接 ''' import redis conn=redis.Redis(host='47.98.55.191',port=6379,password='123456') conn.set('foo','bar') print(conn.get('foo'))
连接池
''' 连接池 edis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,
每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。 ''' import redis pool=redis.ConnectionPool(host='47.98.55.191',port='6379',password='123456') r=redis.Redis(connection_pool=pool) r.set('name','rose') print(r.get('name'))
字符串
''' 字符串 set(name, value, ex=None, px=None, nx=False, xx=False) 在Redis中设置值,默认不存在则创建,存在则修改 参数: ex,过期时间(秒) px,过期时间(毫秒) nx,如果设置为True,则只有name不存在时,当前set操作才执行 xx,如果设置为True,则只有name存在时,岗前set操作才执行 ''' #设置值,只有name不存在时,执行设置操作(添加) ret=r.setnx('name', 'rose') #key timeout value,设置过期时间,单位秒 ret=r.setex('name',10,'rose') #key timeout value,设置过期时间 单位毫秒 r.psetex('name', '10000','jack') print(r.get('name')) #批量设置值,亮亮取值 keydict = {} keydict['key1'] = 324 keydict['key2'] = 'ag' print(r.mset(keydict)) list = ['key1','key2'] print(r.mget(list)) #取值 r.get('name') #设置新值并获取原来的值 ret=r.getset('name','jack') #取字符串部分内容 r.set('say','hello world') ret=r.getrange('say',0,4) print(ret) #从字符串下标为offset开始替换 r.set('say','hello world') ret=r.setrange('say',6,'langlang') print(r.get('say')) #获取name对应的值的二进制表示中的某位的值 (0或1),从右往左数 r.set('num',5) print(bin(5).replace('b','')) print(r.getbit('num',1)) #返回字节的长度 r.strlen('name') # 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。(整型) r.incr('count',2) # 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。(浮点型) r.incrbyfloat('f',1.1) # 自减 name对应的值,当name不存在时,则创建name=amount,否则,则自增。(整型) r.decr('num',2) print(r.get('num')) #在字符串后面追加内容 r.append('say','ac')
hash操作
#name对应的hash中设置一个键值对(不存在,则创建;否则,修改) r.hset('userinfo','name','jack') #批量设置 dict={'name':'jack','age':22,'sex':'girl'} r.hmset('userinfo',dict) #读取 ret=r.hget('userinfo','name') #批量读取 dict={'name','age'} ret=r.hmget('userinfo',dict) #读取对应userinfo所有 ret=r.hgetall('userinfo') print(ret) for i,j in ret.items(): print(i.decode('utf-8')+':'+j.decode('utf-8')) # 获取name对应的hash中键值对的个数 ret=r.hlen('userinfo') # 获取name对应的hash中所有的keys ret=r.hkeys('userinfo') # 获取name对应的hash中所有的value的值 ret=r.hvals('userinfo') # 检查name对应的hash是否存在当前传入的key ret=r.hexists('userinfo','name') # 将name对应的hash中指定key的键值对删除 ret=r.hdel('userinfo','name') # 自增name对应的hash中的指定key的值,不存在则创建key=amount ret=r.hincrby('userinfo','age',1) print(r.hget('userinfo','age')) # 自增name对应的hash中的指定key的值,不存在则创建key=amount(浮点型) ret=r.hincrbyfloat('userinfo','hight',1.1) print(r.hget('userinfo','hight')) # # 增量式迭代获取,对于数据大的数据非常有用,hscan可以实现分片的获取数据,并非一次性将数据全部获取完,从而放置内存被撑爆 #数量必须足够多否则测不出(10000可以) #一万条数据查询一百次 cursor=0 i=0 while True: cursor1, data1 = r.hscan('num', cursor=cursor, match=None, count=100) i += 1 print(i) print(data1) if cursor1: cursor=cursor1 else: break #hscan_iter(name, match=None, count=None) #利用yield封装hscan创建生成器,实现分批去redis中获取数据 ret=r.hscan_iter('num',match=None,count=1000) for item in r.hscan_iter('num'): print(item)
原文地址:https://www.cnblogs.com/huay/p/11406440.html
- [快学Python3]数据结构与算法-二分查找
- [快学Python3]数据结构-队列
- 51Nod 1090 3个数和为0(暴力)
- qscoj 128 喵哈哈村的魔法源泉(2)(模仿快速幂,好题)
- POJ 3624 Charm Bracelet(01背包裸题)
- 2015 计蒜之道 初赛(4)爱奇艺的自制节目(枚举 贪心)
- Codeforces 810C Do you want a date?(数学,前缀和)
- [快学Python3]数据结构-堆栈
- [快学Python3]PyMySQL库
- [快学Python3]SMTP发送邮件
- Educational Codeforces Round 21 D.Array Division(二分)
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2)(A.暴力,B.优先队列,C.dp乱搞)
- [libvirt][nginx]libvirt文档访问速度提高的小技巧
- 图论----同构图(详解)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Codeforces Round #624 (Div. 3) C - Perform the Combo
- 都是微服务的天下了,还有不知道 JSON 的程序员吗?
- Codeforces Round #624 (Div. 3) D.Three Integers
- select 高级查询之连接查询
- select 高级查询之子查询
- Java 最实用的文件读写
- MySQL基本操作
- MySQL 索引
- notepad++ 配置c++及运行
- Leetcode 687. 最长同值路径
- Leetcode 1071. 字符串的最大公因子
- PAT (Advanced Level) Practice 1146 Topological Order (25分)
- 【风险预警】RPCBind服务被利用进行UDP反射DDoS攻击
- MySQL DDL 操作
- Leetcode 169 多数元素