Python - Redis
Posted megachen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - Redis相关的知识,希望对你有一定的参考价值。
Python - Redis
安装
brew install redis
pip install redis
redis-server --port 6379
连接
直接连接
r = redis.Redis(host=‘localhost‘, port=6379, decode_responses=True)
decode_responses=True
则 redis 在返回数据时不会返回 byte 类型, 就是对 byte 进行解码
基于连接池
pool = redis.ConnectionPool(host=‘localhost‘, port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)
删除
r.keys()
: 获取所有的 keyr.delete(*r.keys())
: 删除所有的 key
字符串常用操作(内部存储 byte)
set(name, value, ex=None, px=None, nx=False, xx=False)
- name: key
- value: string type
- ex: expire time(second)
- 特点
- 重名会覆盖
setnx(name, value, ex)
- name: key
- value: string type
- ex: expire time(second)
- 特点
- 之后当 name 对应的 value 不存在时才新建
psetex(name, value, ex)
- 与
setex
一样, 只是过期时间的单位为毫秒
- 与
mset(*args, **kwargs)
- 批量存储
mget(*args)
:- 批量获取
getset(name, value)
:- 获取原来的值并设置新的值
getrange(key, start, end)
:- 获取 start:end 的序列
setrange(key, start, value)
:- 从 start 开始插入 value, 会把原来的位置给覆盖掉
strlen(key)
:- 计算 key 对应的值的字节数, 如果是汉子的 UTF-8 则一个 3 个字节
incr(self, key, amount=1)
- 增加, 不管 value 是数组还是字符串都可以, 因为 redis 统一当做 byte
incrbyfloat(self, key, amount=1.0)
decr(self, name, amount=1)
append(key, value)
hash 常用操作
hset(name, key, value)
hsetnx(name, key, value)
hmset(name, **kwargs)
hmget(name)
hgetall()
hdel(name,*keys)
hkeys(name)
hexists(name, key)
- 注意
- redis 在存储深层次的 dict 时在获取的时候会将 dict 转为一个字符串, 这个字符串又不可以使用 json.loads 处理, 因为它的 key 是单引号的, 所以只要在 redis 中存储 dict 时, 将 key 对应的是 dict 使用 json.dumps() 转为字符串, 获取时使用 json.loads
list 常用操作
lrange(name, start, end)
: 从左开始返回 start:end 的数据llen(name)
: 元素个数lpush(name, *value)
: 从左压入rpush(name, *value)
: 从右压入lset(name, index, value)
: 设置 index 对应的值linsert(name, where, refvalue, value)
- where:
AFTER
orBEFORE
- refvalue: 为值不是索引
- where:
lrem(key, value, num)
:- 删除
lpop(name)
: 弹出lindex(name, index)
: 返回 index 对应的 valuelrange(name, start, end)
: 切 start:end
以上是关于Python - Redis的主要内容,如果未能解决你的问题,请参考以下文章