Python操作Redis

简介

redis连接实例是线程安全的,可以直接将redis连接实例设置为一个全局变量,直接使用。如果需要另一个Redis实例(or Redis数据库)时,就需要重新创建redis连接实例来获取一个新的连接。同理,python的redis没有实现select命令

安装Redis

  • 安装
    $docker run --name redis -d -p 6379:6379 redis
  • 安装依赖库
    $pip install redis

连接Redis

连接redis,默认存储为byte类型。decode_responses=True参数使得存储类型为string,但性能不如byte。

import redis   # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库

r = redis.Redis(host='localhost', port=6379) 
r.set('key', 'value') 
print(r['key'])
print(r.get('key'))  # 取出键name对应的值
print(type(r.get('key')))

连接池

redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。
可以直接建立一个连接池,然后作为参数传递给Redis方法,这样就可以实现多个Redis实例共享一个连接池。
redis模块为我们实现了释放连接回连接池,因此我们不需要手动释放。

import redis

pool = redis.ConnectionPool(host='localhost', port=6379, max_connections=32)
r = redis.Redis(connection_pool=pool)
r.set('gender', 'male')     # key是"gender" value是"male" 将键值对存入redis缓存
print(r.get('gender'))      # gender 取出键male对应的值

Api

String

set(name, value, ex=None, px=None, nx=False, xx=False)
在Redis中设置值,默认,不存在则创建,存在则修改
参数:
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行
xx,如果设置为True,则只有name存在时,当前set操作才执行

get key

List

lpush key value # 头部添加
rpush key value # 尾部添加
llen key # 查看列表长度
lrange start end # 查看一段列表 lrange key 0 -1 返回所有数据
lpop key # 从左侧删除元素
rpop key # 从右侧删除元素

Set

sadd key member # 添加元素
srem key member # 删除元素
spop key # 删除并返回元素
sismember key member # 判断member是否在set中,返回1表示存在
sinter key1 key2 key3 # 返回给定集合的交集
sunion key1 key2 key3 # 返回给定集合的并集
sdiff key1 key2 key3 # 返回给定集合的差集
smembers key # 返回集合所有元素
scard key # 返回集合元素个数

Sorted Set

zadd key score member # 添加元素
zrem key member # 删除元素
zrange key start end # 返回有序结果,升序
zcard key # 返回集合中元素个数
zscore key element # 返回给定元素对应的score

Hash

hset key field value # 设置hash值
hget key field # 获取hash值
hexists key field # 测试指定field 是否存在
hdel key field # 删除指定的hash field
hlen key # 获取域的数量
hkeys key # 获取所有的域名
hgetall # 获取所有域名和值

其他

keys * #查看所有key
exists key #判断指定key是否存在,存在返回True,反之False.
ttl key #查看有效时间以秒为单位
type key #查看键的类型
del key #删除该键

posted @ 2019-06-20 13:46  家迪的家  阅读(447)  评论(0编辑  收藏  举报