python操作Redis方法速记
redis有5种数据结构,分别如下:
5种数据结构
python语言对5种数据结构的增删改查
全局函数
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方法速记的更多相关文章
- redis 原生操作 & python操作redis
一.基本介绍 1.简介 Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库.Redis全称为:Remote Dictionary Ser ...
- python——操作Redis
在使用django的websocket的时候,发现web请求和其他当前的django进程的内存是不共享的,猜测django的机制可能是每来一个web请求,就开启一个进程去与web进行交互,一次来达到利 ...
- Python操作Redis、Memcache、RabbitMQ、SQLAlchemy
Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...
- 数据库之redis篇(3)—— Python操作redis
虽然前面两篇已经说了redis的一些配置安装什么的,篇幅有点长,可能看完了也不知道怎么操作,这里再浓缩一下: 什么是redis redis完全开源免费的,遵守BSD协议,是一个高性能的非关系型key- ...
- python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作
python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...
- edis 以及 Python操作Redis
Redis 以及 Python操作Redis Redis Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis有以下特点: -- Redis支持数据的持 ...
- 第三百零一节,python操作redis缓存-管道、发布订阅
python操作redis缓存-管道.发布订阅 一.管道 redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pi ...
- 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型
python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...
- 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表
python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...
随机推荐
- p命名空间和c命名空间
4 p命名空间和c命名空间在通过构造方法或set方法给bean注入关联项时通常是通过constructor-arg元素和property元素来定义的.在有了p命名空间和c命名空间时我们可以简单的把它们 ...
- plsql developer中各个window的作用【转】
转载自,原文链接: -程序窗口(program window) :可以执行 sql,sqlplus 相关的语句,例如存储过程,方法,一般用来开发程序用的. -测试窗口(test window):一般是 ...
- Linux centos 安装 ftp(Vsftp) 与 设置ftp(Vsftp)
本文章只是简单搭建,因为公司只须要简单使用,虽然简单但是之前也走了一些弯路,所以决定把过程记录下来. 一.Vsftp安装与卸载 安装:yum install vsftpd 卸载:yum remove ...
- mysql 8.0 1405的坑
因版本差异:password 可能对应:authentication_string字段 不行的话再尝试一下,并且修改下密码类型 ALTER USER 'root'@'%' IDENTIFIED WI ...
- docker《三》单机部署项目容器,nginx负载均衡
接着<二> 创建一个网段(和二在一个网段) docker network create --subnet=172.19.0.0/24 pro-net docker run -d --nam ...
- 证明:(a,[b,c]) = [(a,b),(a,c)]
这题是潘承洞.潘承彪所著<初等数论>(第三版)第一章第5节里一个例题,书中采用算术基本定理证明,并指出要直接用第4节的方法来证是较困难的. 现采用第4节的方法(即最大公约数理论里的几个常用 ...
- 一、部署sqlserver
1.下载并挂载sqlserver镜像 2.填写秘钥:6GPYM-VHN83-PHDM2-Q9T2R-KBV83 3.默认下一步 4.勾选需要的功能 5.默认下一步 6.默认下一步 等待安装完成即可. ...
- Java clone() 方法克隆对象——深拷贝与浅拷贝
基本数据类型引用数据类型特点 1.基本数据类型的特点:直接存储在栈(stack)中的数据 2.引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内存里 引用数据类型在栈中存储了指针,该指 ...
- Spring Dependency Injection浅析
Dependency Injection 依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件. 1.在UserService中提供一个get/set的name方法, ...
- C# HttpWebResponse 请求常见的状态码
Accepted 202 等效于 HTTP 状态 202. Accepted 指示已接受请求做进一步处理. AlreadyReported 208 等效于 HTTP 状态 208. AlreadyRe ...