python操作Redis方法速记

摘要:
ex、px二选一即可nx:如果设置为True,则只有name不存在时,当前set操作才执行xx:如果设置为True,则只有name存在时,当前set操作才执行2.设置多个值value_dict={'num':123,'str':456}mset3.不存在键更新value,存在则不变setnx4.设置value,并添加有效期setexr.setex设置name=James,并且有效期为1s修改1.value后面追加append查询1.获取单个值,返回字符串get2.获取多个值,返回列表mget3.给已有的键设置新值,并返回原有的值。

redis有5种数据结构,分别如下:
5种数据结构
python操作Redis方法速记第1张
python语言对5种数据结构的增删改查

python操作Redis方法速记第2张
python操作Redis方法速记第3张
python操作Redis方法速记第4张
python操作Redis方法速记第5张
python操作Redis方法速记第6张

全局函数
python操作Redis方法速记第7张

redis 连接
import redis

pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

redis 取出的结果默认是字节,可以设定 decode_responses=True 改成字符串
redis python操作

一、字符串

创建

1.设置单个键值对
set(name, value, ex=None, px=None, nx=False, xx=False)
ex:过期时间(秒),时间到了后redis会自动删除
px:过期时间(毫秒),时间到了后redis会自动删除。ex、px二选一即可
nx:如果设置为True,则只有name不存在时,当前set操作才执行
xx:如果设置为True,则只有name存在时,当前set操作才执行

2.设置多个值
value_dict = {'num': 123, 'str': 456}
mset(value_dict)

3.不存在键更新value,存在则不变
setnx(name, value)

4.设置value,并添加有效期
setex(name, time, value)
r.setex('name', 1, 'James') 设置name=James,并且有效期为1s

修改

1.value后面追加
append(key, value)

查询

1.获取单个值,返回字符串
get(key)

2.获取多个值,返回列表
mget(['num', 'str'])

3.给已有的键设置新值,并返回原有的值。返回字符串
getset(name, value)
当所给的键不存在时,会设置新值,但返回值是None

4.获取value的长度,返回整型
strlen(key)

5.获取value从start到end的子字符串,返回字符串
getrange(key, start, end)

二、列表

redis中,一个键对应一个列表

增加:

1.在列表右边添加值。key不存在时创建一个新列表,返回列表的长度
redis.rpush(key, 1,2,3,4)
可以添加单个,可以添加多个。当有多个值时,将值依次添加到最右边
arr = [5,4,3,2,1]
r.rpush(key, *arr)

2.在列表左边添加,key不存在时创建一个新列表,返回列表的长度
r.lpush(key, 1,2,3,4)
当有多个值时,将值依次添加到最左边。

3.在列表中间插入新值
linsert(name, where, refvalue, value)

name:键名
where:位置,前面(BEFORE)或后面(AFTER)
refvalue:指定哪个值的前后插入
value:插入的新值

返回值:插入后列表的长度,若返回-1,则refvalue不存在

r.linsert(key, 'after', 6, 'new_value')

4.key存在时插入。lpushx添加到左边,rpushx添加到右边。返回列表长度
lpushx(key, value) 添加到左边
rpushx(key, value) 添加到右边
只有键存在时,才添加。若键不存在则不添加,也不新创建列表

修改

1.列表中通过索引赋值,返回True或False
lset(key, index, value)

删除

1.删除左边第一个值,返回删除的值
lpop(name)

2.删除右边第一个值,返回删除的值
rpop(name)

3.删除列表中范围之外的所有值,返回删除的值
ltrim(key, start, end)

4.删除列表中N的相同的值,返回删除的数量
lrem(name, num, value)
name:键名
value:需删除的值
num:删除的个数 整数表示从左往右 负数表示从右往左 例如:2 -2
返回值:返回删除的个数

r.lrem('arr', 10, 'delete_name')

5.删除并返回列表中首个元素,列表为空则一直阻塞
blpop(key, timeout=n)

6.删除并返回列表中尾元素,如果列表为空则一直阻塞
brpop(key, timeout=n)

查询

1.列表中获取一段数据,返回列表
lrange(name, start, end)

2.通过索引获取列表值,返回单个元素
lindex(key, index)

3.获取键对应列表的长度,返回数值
llen(key)

三、字典

一个name对应一个字典,类似于字典名字。字典中是key->value

增加

1.单个添加,返回添加的数量
hset(name, key, value)
key存在则修改,否则就是添加

2.批量添加,返回True或False
mapping = {'age':10, 'tel':123}
redis.hmset(name, mapping)

3.如果键不存在添加,否则不处理。返回创建字典长度
hsetnx(name, key, value)

删除

删除键值对,返回删除的个数
hdel(name, key)
可删除多个
hdel(name, *keys)

修改

hset(name, key, value)
key存在则修改,否则就是添加

查询

获取所有键值对,返回一个字典
hgetall(name)

获取所有的key,返回列表
hkeys(name)

获取所有value,返回列表
hvals(name)

获取指定key的值,返回元素
hget(name, key)

获取多个键值对,返回列表
keys = ['age', 'tel']
r.hmget(name, [keys])

获取键值对个数,返回数字
hlen(name)

查询哈希中是否有某个key,返回True或False
hexists(name, key)

四、集合

集合中的元素不重复,一般用于过滤元素

增,返回添加的数量

没有key则创建集合并添加所有元素;有key则直接添加到结合中
sadd(name, value1,value2,value3)

删,返回删除元素的个数

1.删除集合中一个或多个元素
srem(key,values)

srem(key, value1, value2, value3)

2.随机删除并返回集合中元素,返回元素
spop(key)

3.将一个集合移动到另一个集合
smove(src, dst, value)

1.返回集合中所有元素,返回集合
smemebers(key)

2.返回集合中元素的个数,返回个数
scard(key)

3.随机获取n个元素,返回列表
srandmember(name, number=None)
name:键名
number:一个或N个,默认返回一个。若返回N个,则返回List类型
返回值:返回一个值或一个列表

r.srandmemeber(key, number=45)

4.判断某个值是否在集合中,返回True或False
sismember(key, value)

5.差集,返回集合
sdiff(key1, key2)

6.交集,返回集合
sinter(key1, key2)

7.并集,返回集合
sunion(key1, key2)

五、有序集合

有序集合比集合多了一个分数的字段,可对分数升序降序

增,返回增加元素个数

set_dict = {'one': 1, 'two':9, 'three': 12}
r.zadd(key, set_dict)

删,返回删除元素的个数

1.删除有序集合中某个或多个值
zrem(key, *values)
返回删除的个数

2.根据分数范围删除有序集合,返回删除元素的个数
zremrangebyscore(name, min, max)

3.根据排名范围删除集合
zremrangebyrank(key, min, max)

增加有序集合中某个值的分数
zincrby(name, value, amount=1)

value:若存在,则增加其amount分数;若不存在,则增加新值以及对应的分数
amount:增加的值,可以为负数
返回值:增加后的分数 float类型 ;形如: -5.0 <class 'float'>

r.zincrby('Zarten', 'zhi', -5)

1.返回有序集合中元素个数,返回数字
zcard(key)

2.返回有序集合中分数范围内的元素个数,返回数字
zcount(key, min, max)

3.返回有序集合中指定某个值的分数,返回数字
zscore(key, name)

4.返回某个值在有序集合中的分数排名,返回数字
zrank(name, value)

5.返回有序结合分数排序后的一段数据,返回列表
zrange(name, start, end, desc=False, withscores=False, score_cast_func=float)
name:redis的name
start:有序集合索引起始位置(非分数)
end:有序集合索引结束位置(非分数)
desc:排序规则,默认按照分数从小到大排序
withscores:是否获取元素的分数,默认只获取元素的值
score_cast_func:对分数进行数据转换的函数

六、全局函数

全局函数对任何数据结构都适用

1.删除一个或多个键的司所有数据
r.delete(*names)

2.判断redis中是否存在某个键
r.exists(key)

3.重命名redis中建名
r.rename(key, new_key)

4.移动某个键所有数据到某一个db中
r.move(key, db_name)

5.随机获取redis中某个键名
r.randonkey()

6.查看某个键数据结构类型
r.type(key)

返回值:字符串(字节形式) 形如: b'hash'

none (key不存在)
string (字符串)
list (列表)
set (集合)
zset (有序集)
hash (哈希表)

7.设置过期时间
r.expire(key, time)

8.获取键的过期时间
r.ttl(name)

9.获取所有符合规则的键
keys(pattern)
r.keys('n*') 获取所有以n开头的键

免责声明:文章转载自《python操作Redis方法速记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Unity】伪线框渲染Shader的实现小程序与WebRTC联姻能擦出怎样的火花?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Redis AOF重写

AOF 重写 AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以AOF文件的大小随着时间的流逝一定会越来越大;影响包括但不限于:对于Redis服务器,计算机的存储压力;AOF还原出数据库状态的时间增加; 为了解决AOF文件体积膨胀的问题,Redis提供了AOF重写功能:Redis服务器可以创建一个新的AOF文件来替代现有的AOF文件,新旧两个文...

springboot 2.x版本Redis设置JedisConnectionFactory

一、 springboot2.x 集成redis时,配置连接信息和构造方法发生了改变。 2.X版本可以使用RedisStandaloneConfiguration、RedisSentinelConfiguration、RedisClusterConfiguration三种方式配置连接信息。 这里我们以RedisStandaloneConfiguration...

Python编程软件的安装与使用——Windows、Linux和Mac

Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ        最近,有读者透露:Python软件如何安装?为什么自己安装的软件会有各种“奇怪”的问题?据此,本篇随笔将具体讲述如何安装Python 3.x版本的软件。特别地,篇中所述的不是安装文本编辑器(比如Notepad++,Sublimetext,PyCharm.......

python下编译py成pyc和pyo

其实很简单,用python -m py_compile file.py python -m py_compile /root/src/{file1,file2}.py编译成pyc文件。也可以写份脚本来做这事:Code: import py_compile py_compile.compile('path') //path是包括.py文件名的路径 用py...

python csv文件打开错误:_csv.Error: line contains NULL byte

正常的csv文件读取如下: #coding:utf-8 importcsv csvfilename = 'demo.csv' print u'################获取某一行'with open(csvfilename, 'rb') as csvfile: reader =csv.reader(csvfile) rows =...

Linux系统下-关于Python和pip的那些报错

   1、在安装过程中出现如下错误: ImportError: No module named setuptools [root@localhost MySQL-python-1.2.5]# python setup.py install Traceback (most recent call last): File "setup.py", line 7,...