在Python3中 *** 作Redis缓存服务器!在这里的 *** 作示例以单机版的Redis,此外还有Redis Sentinel以及Redis Cluster,内容主要以Python连接Redis和 *** 作Redis五大类数据结构对象。
1. 连接Redis分为两种,一种是Redis,另外一种是ConnectionPool
from redis import Redis, ConnectionPool
# 连接
# 在进行redis *** 作时,如每次 *** 作都进行socket连接,会有大量的时间被浪费在建立连接的过程中
redisclient = Redis(host="192.168.26.173", port=6379, password="Passwd", db=0)
print(redisclient)
# 连接池
# 在生产环境中,建议使用连接池方式连接Redis
# 建立一个connectionpool,可以理解为预先将连接建好,在对redis *** 作时,直接从pool中取出已有连接
redispool = ConnectionPool(host='192.168.26.173', port=6379, password='Passwd', db=0, max_connections=16)
redisclientpool = Redis(connection_pool=redispool)
print(redisclientpool)
#终端输出!
Redis>>
Redis>>
2. 通用 *** 作Redis
from redis import Redis, ConnectionPool
client = Redis(host="192.168.26.173", port=6379, password="Passwd", db=0)
print("dbsize:", client.dbsize())
for key in client.scan_iter("s*"):
print(key)
# print(client.exists('name'))
print("新增一个Key,key01:value01", client.set("key01", "value01"))
print("判断Key是否存在!", client.exists("sys_config:dasd"))
print("判断一个Key是否存在!", client.exists("key01"))
print("Key的类型是:", client.type("sys_config:dasd"))
print("设置Key的过期时间为86400秒:", client.expire("sys_config:dasd", 86400))
print("获取Key的过期时间:", client.ttl("sys_config:dasd"))
3. 各数据结构类型 *** 作
3.1 *** 作字符串
from redis import Redis, ConnectionPool
conn_redis = Redis(host='192.168.26.173', port=6379, password='Passwd@4321', db=0)
# *** 作字符串
# 字符串赋值
print("set a key:", conn_redis.set('name', 'test'))
# 字符串取值
print("get a key:", conn_redis.get('name'))
# 加 1
print("incr", conn_redis.incr('view'))
# 结果如下
set a key: True
get a key: b'test'
incr 1
3.2 *** 作列表
# *** 作列表
# 在列表左边添加一个值
print("lpush", conn_redis.lpush('list', 0))
print("lpush", conn_redis.lpush('list', 1))
# 获取列表的长度
print("lpush", conn_redis.llen('list'))
# 获取列表左边的10个元素
print("lrange", conn_redis.lrange('list', 0, 10))
# 从列表右边d出一个元素
print("rpop", conn_redis.rpop('list'))
# 结果
lpush 1
lpush 2
lpush 2
lrange [b'1', b'0']
rpop b'0'
3.3 *** 作哈希
# *** 作哈希
# 给哈希json key赋值1个
# print(conn_redis.delete('json'))
print("hset", conn_redis.hset("json", "key1", "val1"))
# 给哈希json key赋值多个
print("hmset", conn_redis.hmset("json", {"key2": "val2", "key3": "val3"}))
# 给哈希json key赋值,如果不存在
print("hsetnx", conn_redis.hsetnx("json", "key1", "value1"))
# 获取哈希json key指定key的值
print("hget", conn_redis.hget("json", "key1"))
# 获取哈希json所有的key内容
print("hgetall", conn_redis.hgetall("json"))
# 获取哈希json的长度
print("hlen", conn_redis.hlen("json"))
# 删除哈希json中指定的key
print("hdel", conn_redis.hdel("json", "key2"))
# 执行结果
hset 1
python *** 作redis03.py:34: DeprecationWarning: Redis.hmset() is deprecated. Use Redis.hset() instead.
print("hmset", conn_redis.hmset("json", {"key2": "val2", "key3": "val3"}))
hmset True
hsetnx 0
hget b'val1'
hgetall {b'key1': b'val1', b'key2': b'val2', b'key3': b'val3'}
hlen 3
hdel 1
3.4 *** 作集合
# *** 作集合
# 集合赋值
print("sadd", conn_redis.sadd("set1", "a", "b", "c"))
# 获取集合所有内容
print("smembers", conn_redis.smembers("set1"))
# 获取集合长度
print("scard", conn_redis.scard("set1"))
# 判断元素是否在集合中
print("sismember", conn_redis.sismember("set1", "d"))
# print("sismember", conn_redis.sismember("set1", "a", "d"))
# 集合赋值02
print("sadd02", conn_redis.sadd("set02", "a", "b", "c", "d"))
# 获取两个集合的交集
print("sinter", conn_redis.sinter("set1", "set02"))
# 执行结果
sadd 3
smembers {b'b', b'c', b'a'}
scard 3
sismember False
sadd02 4
sinter {b'b', b'c', b'a'}
3.5 *** 作有序结合
# *** 作有序集合
# 有序集合赋值
print("sinter", conn_redis.zadd("zset1", {"aaa": 90, "bbb": 80, "ccc": 85}))
# 有序集合中指定元素分值加1
print("sinter", conn_redis.zincrby("zset1", 1, "bbb"))
# 获取10个有序集合的元素
print("zrange", conn_redis.zrange("zset1", 0, 10))
# 获取有序集合中分值在100-80之间的元素,并按照分值倒序
print("zrevrangebyscore", conn_redis.zrevrangebyscore("zset1", 100, 80, withscores=True))
# 获取有序集合中分值在85-90之间的元素的个数
print("zcount", conn_redis.zcount("zset1", 85, 90))
# 执行结果
sinter 3
sinter 81.0
zrange [b'bbb', b'ccc', b'aaa']
zrevrangebyscore [(b'aaa', 90.0), (b'ccc', 85.0), (b'bbb', 81.0)]
zcount 2
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)