安装包
第一种方式:
pip3 install redis
第二种方式:
easy_insatll redis
第三种方式:
wget https://ithub.com/andmccurdy/redis-py/archive/master.zip
unzip master.zip
cd redis-py-master
sudo python setup.py install
- 创建虚拟环境
- 安装redis
与python交互
(1)引入模块
from redis import *
StrictRedis
类- 通过
init
创建对象,指定参数为host,port与指定的服务器和端口连接,host
默认为localhost
,post
默认为6379
,db
默认为0
。
(2)通过StrictRedis
对象连接redis
数据库
sr = StrictRedis(host='localhost', port=6379, db=0, password=password)
可以简写为
sr = StrictRedis(password=password)
sr
实例化对象方法:
string | |
---|---|
set(name, value, ex=None, px=None, nx=False, xx=False) | 设置键值 |
setex(name, value, time) | 设置键值与秒过期时间 |
psetex(name, time_ms, value) | 设置键值与毫秒过期时间 |
mset(*args, **kwargs) | 同时设置多个键值 |
append(key, value) | 在value后面追加内容 |
strlen(name) | 获取value长度 |
incr(name, amount=1) | 对name的value进行自增,如果name不存在则创建,否则自增 |
incrbyfloat(name, amount=1.0) | 同上,支持浮点数自增 |
decr(name, amount=1) | 自减,同自增一样,如果进行自减的value不是整数就报错 |
getrange(key, start, end) | 通过索引的方式来获取value |
setrange(name, offset, value) | 根据索引修改value |
get(name) | 获取单个值 |
mget(keys, *args) | 获取多个值 |
keys | |
---|---|
exists(name) | 判断键是否存在 |
type(name) | 判断键对应值得类型 |
delete(*names) | 删除键值 |
expire | 设置键值过期时间 |
rename(src, dst) | 重命名键 |
randomkey() | 随机获取一个redis的name,不进行删除 |
ttl(name) | 查看过期时间 |
hash | |
---|---|
hset(name, key, value) | 设置name的键值对,有则修改,没有则创建 |
hmset(name, mapping) | 同时设置多个name的key/value |
hkeys(name) | 获取name中所有的key |
hvals(name) | 获取name中所有的value |
hget(name, key) | 获取name中key的值 |
hmget(name, keys, *args) | 同时获取name的多个值 |
hgetall(name) | 获取name对应的所有key/value,返回字典形式 |
hlen(name) | 获取name对应键值对的个数 |
hexists(name, key) | 检查当前name中是否有传入的key |
hdel(name, key) | 删除name中对应的key |
hincrby(name, key, amount=1) | name中key对应的value进行自增,如果不存在则创建 |
hincrbyfloat(name, key, amount=1.0) | value自增,支持浮点数,同上 |
list | |
---|---|
lpush(name, *values) | 在最左边添加值 |
rpush(name, *values) | 在最右边添加值 |
lpushx(name, value) | 只有name已经存在时,值添加到列表的最左边 |
rpushx(name, value) | 只有name已经存在时,值添加到列表的最右边 |
linsert(name, before/after, refvalue, value) | 在name的某一个值前面或者后面插入一个新值 |
lrange(name, start, end) | 使用切片获取数据 |
lpop(name) | 删除name中左侧第一个元素,并返回值 |
rpop(name) | 删除name中右侧第一个元素,并返回值 |
lindex(name, index) | 获取name中对应索引的值 |
ltrim(name, start, end) | 在name对应的列表中移除没有在start-end索引之间的值 |
llen(name) | 获取name元素的个数 |
lset(name, index, value) | 对name中index索引位置的值进行重新赋值 |
lrem(name, value, num=0) | 删除指定value后面或者前面的值 |
rpoplpush(src, dst) | 从src列表中取出最右边的元素,同时将其添加至dst列表的最左边 |
set | |
---|---|
sadd(name, *values) | 为name添加值,如果存在则不添加 |
smembers(name) | 获取name集合中所有的成员 |
srem(name, *values) | 删除name集合中的values数据 |
scard(name) | 返回name的元素数量 |
sdiff(keys, *args) | 在keys集合中不在其他集合中的数据 |
sdiffstore(dest, keys, *args) | 在keys集合中不在其他集合中的数据保存到dest集合中 |
sinter(keys, *args) | 获取keys集合中与其他集合中的并集 |
sinterstore(dest, keys, *args) | 获取keys集合中与其他集合中的并集数据并保存到dest集合中 |
sismember(name, value) | 获取value是否是name集合中的成员 |
smove(src, dst, value) | 将src中的value移动到dst中 |
spop(name) | 删除并返回name中的随机成员 |
srandmember(name, number=None) | 随机获取name集合中的number个成员,默认number=1 |
sunion(keys, *args) | 获取keys集合与其他集合的并集 |
sunionstore(dest, keys, *args) | 获取keys集合与其他集合的并集并保存到dest中 |
zset | |
---|---|
zadd(name, *args, **kwargs) | 将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素 |
zcard(name) | 返回有序集合name元素的数量 |
zcount(name, min, max) | 返回在name中值在min与max之间的值个数 |
zincrby(name, value, amount=1) | name中让value的值加上amount |
zrem(name, *values) | 删除name中对应的values |
zremrangebyrank(name, min, max) | 根据排行范围进行删除 |
zremrangebyscore(name, min, max) | 根据分数范围进行删除 |
zscore(name, value) | 返回指定value的值是多少 |
zrangebyscore(name, min, max, start=None, num=None, withscores=False, score_cast_func=float) | 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列 |
(3)示例
import redis
两种方式都可以,推荐使用第一种
conn = redis.StrictRedis(host='localhost', port=6379)
conn = redis.Redis(host='localhost', port=6379)
(4)使用连接池连接到Redis
pool = redis.ConnectionPool(host='192.168.56.100', port=6379)
conn = redis.StrictRedis(connection_pool=pool)