Python操作Redis大全
文章插图
来源: 廖高祥 链接:
一、字符串 strings
Python操作Redis的redis模块对字符串(string)的主要操作函数包括:SET、GET、GETSET、SETEX、SETNX、MSET、MSETNX、INCR(INCRBY,DECR,DECRBY在python中庸同一个函数incr实现)、APPEND、SETRANGE、STRLEN 。 函数说明如下:
- SET: 为指定的键(key)设置值(value) ,set(self, name, value, **kwargs) 。
- GET:获取指定键(key)绑定的值(value) , get(self, name) 。
- GETSET:为指定的键(key)设置新的值(value) , 并返回旧的值(old Value) , getset(self, name, value)
- SETEX:为指定的键(key)设置过期以秒(second)计的过期时间 , setex(self, name, value, time)
- SETNX:键(key)不存在时 , 为键(key)指定值(value) , setnx(self, name, value)
- MSET:一次性设置多个键-值(key-value)对,函数设置的键-值对(即mapping所指内容)数据要以Python字典数据类型传入 , mset(self, mapping)
- MSETNX:键-值(key-value)对不存在时 , 设置键-值(key-value)对,msetnx(self, mapping) , mapping值参考6
- INCR:自增函数 , 默认步长为1 , 通过对步长(amount)大小以及字符的控制实现了INCRBY(amount>=1)、DECR(amount=-1)、DECRBY(amount<=-1)等函数功能 , incr(self, name, amount=1)
- APPEND:为指定的字符串追加值 , 若不存在则直接创建 , append(self, key, value)
- SETRANGE:用 value 参数覆写给定 key 所储存的字符串值 , 从偏移量 offset 开始 , setrange(self, name, offset, value)
- STRLEN:返回字符串的长度 , 当name不存在时返回0 , strlen(self, name)
#!/usr/bin/python# -*- coding:utf-8 -*-# __author__ = 'Jack'pool = redis.ConnectionPool(host='127.0.0.1', port=6379)r = redis.Redis(connection_pool=pool)r.flushall # 清空Redisr.setex('name', value='http://kandian.youth.cn/index/liaogx', time=2) # 设置新值 , 过期时间为3sr.mset(k1 = 'v1', k2 = 'v2', k3 = 'v3') # 批量设置新值print(r.mget('k1', 'k2', 'k3', 'k4')) # 批量获取新值print(r.getset('name', 'liaogaoxiang')) # 设置新值并获取原来的值print(r.getrange('name', 0, 1)) # 获取子序列 0 <= x <= 1r.setrange('name', 0, 'LIAO') # 修改字符串内容 , 从指定字符串索引开始向后替换(新值太长时 , 则向后添加) , 返回值的长度i = 0while i < 4:print(r.get('name'))time.sleep(1)i += 1source = 'foo'r.set('n1', source)r.setbit('n1', 7, 1)'''注:如果在Redis中有一个对应: n1 = "foo" , 那么字符串foo的二进制表示为:01100110 01101111 01101111所以 , 如果执行 setbit('n1', 7, 1) , 则就会将第7位设置为1 , 那么最终二进制则变成 01100111 01101111 01101111 , 即:"goo"'''print(r.get('n1'))print(r.getbit('n1', 7)) # 获取n1对应的值的二进制表示中的某位的值 (0或1)r.set('n2', '廖高祥')print(r.strlen('n2')) # 返回对应的字节长度(一个汉字3个字节)r.set('num', 1)r.incr('num', amount=10)r.decr('num', amount=1)print(r.get('num')) # 自增num对应的值 , 当name不存在时 , 则创建name=amount , 否则 , 则自增 。 r.append('num', 111)print(r.get('num')) # 在redis num对应的值后面追加内容
输出结果如下:[b'v1', b'v2', b'v3', None]b'liaogx'b'li'b'LIAOgaoxiang'b'LIAOgaoxiang'b'LIAOgaoxiang'b'LIAOgaoxiang'b'goo'19b'10'b'10111'
- 微信还能这么用?让你大开眼界的微信隐藏操作
- 想自学Python来开发爬虫,需要按照哪几个阶段制定学习计划
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 鸿蒙OS大一统需产业合力
- 4G速度变慢?运营商这波操作,让5G秒变“真香现场”
- 小米11操作小技巧:可开启全局120Hz
- 2021年Java和Python的应用趋势会有什么变化?
- 非计算机专业的本科生,想利用寒假学习Python,该怎么入手
- 用Python制作图片验证码,这三行代码完事儿
- 30天自制操作系统:第一天