Python3-22456-005 Python *** 作Redis

Python3-22456-005 Python *** 作Redis,第1张

        在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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/873674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存