python redis命令zadd_Python操作Redis

本文介绍了Python连接Redis的方式,包括使用Redis和StrictRedis类,以及连接池的建立。接着详细讲解了Redis的多种操作,如String、Hash、List、Set和Sorted Set的操作,包括增删改查等基本命令。最后提到了Redis的管道和发布订阅功能,以及Sentinel在主从复制中的作用。
摘要由CSDN通过智能技术生成

1、操作模式

redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。

importredis

r= redis.Redis(host="192.168.0.106", port=6379)

r.set("name", "pd")

val= r.get("name")print(val) #b'pd'

2、连接池(推荐使用这种方式)

redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。

importredis

pool= redis.ConnectionPool(host="192.168.0.106", port=6379, max_connections=1000) #这里最多创建1000个连接

r = redis.Redis(connection_pool=pool)

r.set("foo", "Bar")

用一个py文件来保存创建连接池,其他py文件需要使用就直接导入,相当于使用了单例模式

1468833-20190114175326485-298630032.png

#redis_pool.py

importredis

pool= redis.ConnectionPool(host="192.168.0.106", port=6379, max_connections=1000)

#test.py

importredisfrom redis_pool importpoolwhileTrue:

key= input("请输入key:")

value= input("请输入value:")#去连接池中获取连接

r = redis.Redis(connection_pool=pool)#设置值

r.set(key, value)

3、操作

String(基础)操作:redis中的String在内存中按照一个name对应一个value来存储,如下图:

1468833-20190115160923852-1184959797.png

set(name, value, ex=None, px=None, nx=False, xx=False)

在Redis中设置值,默认,不存在则创建,存在则修改

参数:

ex,过期时间(秒)

px,过期时间(毫秒)

nx,如果设置为True,则只有name不存在时,当前set操作才执行

xx,如果设置为True,则只有name存在时,当前set操作才执行

setnx(name, value)

设置值,只有name不存在时,才执行设置操作

如:

r.set("cc", "xx")

r.setnx("cc", "ss")

r.get("cc") #b'xx'

对比:

r.set("cc", "xx")

r.set("cc", "ss")

r.get("cc") #b'ss'

mset(name, mapping)

批量设置值

如:mset({"k1": "v1", "k2": "v2"})

msetnx(name, mapping)

批量设置值,只有name不存在时,才执行设置操作

示例:

r.mset({"k1": "aa", "k2": "bb"})

r.mset({"k1": "cc", "k2": "dd"})

ret1= r.mget("k1", "k2") #[b'cc', b'dd']

r.mset({"k1": "aa", "k2": "bb"})

r.msetnx({"k1": "cc", "k2": "dd"})

ret2= r.mget("k1", "k2") #[b'aa', b'bb']

setex(name, time, value)

设置值

参数:time,过期时间(数字秒 或 timedelta对象)

psetex(name, time_ms, value)

设置值

参数:time_ms,过期时间(数字毫秒 或 timedelta对象)

get(name)

获取某个值

mget(keys, *args)

批量获取

如:

mget("k1", "k2") 或 mget(["k1", "k2"])

getset(name, value)

设置新值并获取原来的值

r.set("vv", "xx")

ret= r.getset("vv", "ss")print(ret) #b'xx'

getrange(key, start, end)

获取子序列(根据字节获取,非字符)

参数:

name,redis的name

start,起始位置(字节)

end,结束位置(字节)

如:

r.set("k1", "你好吗")

ret= r.getrange("k1", 0, 2)print(ret) #b'\xe4\xbd\xa0'

print(ret.decode("utf8")) #你

strlen(name)

返回name对应值的字节长度(一个汉字3个字节)

示例:

r.set("k1", "你好吗")

ret= r.strlen("k1") #9

setrange(name, offset, value)

r.set("k1", "12345")

r.setrange("k1", 2, "a")

b'12a45'r.setrange("k1", 2, "ab")

b'12ab5'r.setrange("k1", 2, "abde")

b'12abde'

incr(name, amount=1)

自增name对应的值,当name不存在时,则创建name=amount,否则,则自增。

参数:

name,Redis的name

amount,自增数(必须是整数)

示例:

r.set("a", 20)

r.incr("a", amount=2)

r.get("a") #22

incrbyfloat(name, amoun

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值