数据库redis
获取数据运行
pool = redis.ConnectionPool(
decode_responses=True,
host="ip",
port=6388,
db=0,
password="密码",
max_connections=20, # 最大连接数
socket_keepalive=True, # 保持TCP连接活跃
health_check_interval=10, # 健康检查间隔(秒)
socket_timeout=10, # 读写操作超时(秒)
socket_connect_timeout=5, # 连接建立超时(秒)
retry_on_timeout=True, # 超时后自动重试
client_name="my_app_conn", # 客户端名称(Redis监控可见)
)
r = redis.Redis(connection_pool=pool)
全局键
r.delete(*names) # 删除一个或多个键的所有数据
r.exists(key) # 判断redis中是否存在某个键
r.rename(key, new_key) # 重命名redis中建名
r.move(key, db_name) # 移动某个键所有数据到某一个db中
r.type(key) # 查看某个键数据结构类型
r.expire(key, time) # 设置过期时间
r.ttl(name) # 获取键的过期时间
String字符串
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操作才执行
r.set("name", "goldsunshine") # 设置,如果存在就更新
r.setnx('info', '123') # 存在键添加,不存在不添加
r.setex('name', 1, 'James') # 设置name=James,并且有效期为1s
r.append('yelan', '\tworld') # 追加数据
r.get("name") #获取
r.delete("name") #删除
list类型
r.rpush('name', 'wang', 'li', 'liu') # 尾部插入
r.lpush('sex', 'n', 'w', 'n') # 头部插入(倒序)
results = r.lrange('name', 0, 5) # 查询(闭区间)
print(results)
result = r.lindex('name', 2) # 查询指定索引的值
r.lset('name', 1, 'muzi') # 修改指定索引的值
r.rpop('name') # 尾部删除key的值
r.lpop('name') # 头部删除
r.lrem('name', 1, 'liu') # 指定次数指定删除值
r.llen("name") # 获取列表长度
dict哈希
r.hset('info', 'tel', 177) # 添加数据
r.hset('info', mapping={'name': 'remuxo', 'sex': 'nan'}) # 添加数据
r.hset('info', 'tel', 150) # 修改数据(同则修改,无则添加)
r.hget('info', 'tel') # 查看指定域对应的值
r.hgetall('info') # 查询所有的field和value(返回一个字典格式)
r.hvals('info') # 查看所有的值values
r.hkeys('info') # 查看所有的域field
r.hexists("info",'key') # 查询是非有某个key
print(result)
r.hdel('info') # 删除键值对
集合
r.sadd("name", "value1","value2") # 添加
r.srem("name", "value1","value2") # 删除
r.smembers('name') # 查看所有的内容
r.srandmember('name',2) # 随机返回2个
r.scard('name') # 查看集合的长度
r.sismember('name', 'value1') # 判断是否存在
r.sdiff('name', 'value1') # 差集
r.sinter('name', 'value2') # 交集
r.sunion('name', 'value2') # 并集
有序集合
r.zadd("name", {"key": n}) # 有序集合n为数字分数,根据分数排序
r.zincrby("name", 1, "key") # 有序集合key的分数设为1
r.zrem("name", "key") # 删除有序集合key
r.zcard("name") # 有序集合的元素数量
r.zcount("name", 1, 10) # 有序集合的分数在1到10之间的元素数量
r.zscore("name", "key") # 有序集合key的分数
r.zrange("name", 0, -1) # 有序集合的所有元素,按分数排序,返回排序后的元素
r.zrange("name", 0, -1, withscores=True) # 有序集合的所有元素,按分数排序,并返回分数
stream流
# 消息队列相关命令:
# - XADD - 添加消息到末尾
# - XTRIM - 对流进行修剪,限制长度
# - XDEL - 删除消息
# - XLEN - 获取流包含的元素数量,即消息长度
# - XRANGE - 获取消息列表,会自动过滤已经删除的消息
# - XREVRANGE - 反向获取消息列表,ID 从大到小
# - XREAD - 以阻塞或非阻塞方式获取消息列表
r.xadd("name",{"时间":111},) # 添加流信息
r.xtrim('name', maxlen=1000) # 保留最新的1000条消息
r.xtrim('name', maxlen=0) # 等于删除全部消息
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果