Python操作Redis(六)

一.python安装redis:pip install redis


 


 

二.python连接redis的方式:


 

1.StrictRedis实现大部分的官方命令

2.Redis是StrictRedis的子类,用于向后兼容旧版本的redis

官方推荐使用StrictRedis


三.连接实例:

 


 

1.简单的连接:

import redis
#连接Linux下的redis的方式一:
# conn=redis.Redis(host='192.168.177.137',port=6379,db=0,decode_responses=True)
#参数decode_responses=True表示获得的结果自动进行解码,否则不填增加次参数,手动解码:res.decode('utf-8')
#windows中设置了密码的,需要加上这个参数
# conn=redis.Redis(host='192.168.177.137',password='密码',port=6379,db=0,decode_responses=True)
#连接Linux下的redis的方式二:
conn=redis.StrictRedis(host='192.168.177.137',decode_responses=True)
print(conn)

2.连接池Pool

概述:管理一个redis-server的所有连接,避免每次建立,释放连接的开销,默认每个redis实例都会维护一个自己的连接池,可以直接建立一个连接池,作为参数传递给redis,这样可以实现

多个redis共享一个连接池

#导包
import redis
#创建连接池

pool=redis.ConnectionPool(host='192.168.177.137',port=6379,db=0,decode_responses=True)
#将连接池作为参数传递给redis

conn3=redis.Redis(connection_pool=pool)
print(conn3)

 

3.客户端连接redis设置

在主机上ping了虚拟机的ip,可以ping通,然后用telnet连接对应端口telnet 服务器 6379,发现连接不上

(1)在服务器中查看redis的端口是否开放,如果没有,则需要进行开放:

firewall-cmd --query-port=6379/tcp,返回no,执行firewall-cmd --add-port=6379/tcp,返回success

 (2)修改redis.conf文件,将protected-mode由yes改为no

(3)修改redis.conf文件,将bind 127.0.0.1修改为虚拟机地址bind 服务器ip

(4)重新启动redis,在服务器中连接redis,则使用redis-cli -h host的IP -p 6379

(5)在本地cmb中重新telnet,则可以连接成功:

4.Python操作String(字符串)类型

  连接:

 import redis

conn=redis.Redis(host='192.168.177.137',port=6379,db=0,decode_responses=True)

(1)使用set设置单个key的值

conn.set("name","lisi")

(2)使用get获取单个key的值


print(conn.get("name"))

(3)使用mset设置多个key的值


conn.mset({"sex":"female","hobby":"reding"})

(4)使用mget获取多个key的值


print(conn.mget(["name","sex","hobby"]))

 

 

(5)使用getset设置新值,打印原值


print(conn.getset("name","zhangsan"))

 

 

(6)使用strlen获取值的长度


print(conn.strlen("sex"))

(7)使用append追加值

conn.append("age",20202020)

print(conn.get("age"))

 

(8)使用type获取值的类型


print(conn.type("name"))

 

5.python操作hash(哈希)类型

(1)使用hset设置值


conn.hset("myinfo","name","lixiaoxiao")

(2)使用hget获取值


print(conn.hget("myinfo","name"))



(3)使用hmset设置多个值

 conn.hmset("myinfo",{"age":19,"hobby":"reading","sex":"female"})

(4)使用hmget获取多个值

 

print(conn.hmget("myinfo","name","hobby"))
print(conn.hmget("myinfo",["name","hobby"]))

(5)使用hgetall获取所有值

 print(conn.hgetall("myinfo"))


(6)使用hlen获取键值对的个数

 print(conn.hlen("myinfo"))

 

(7)使用hkes获取所有的key

 print(conn.hkeys("myinfo"))

 

 

(8)使用hvlas获取所有key对应的值

 print(conn.hvals("myinfo"))

 

 

(9)使用hexist判断key是否存在

print(conn.hexists("myinfo","name"))

 

 

(10)使用hde删除指定的key

 conn.hdel("myinfo","sex")

print(conn.hgetall("myinfo"))

 

6.python操作list(列表)类型

(1)使用lpush从头部插入元素

conn.lpush("mylist",10,20,22)
print(conn.lrange("mylist",0,-1))

 

 

(2)使用rpush从尾部插入元素

 conn.rpush("mylist",30,40,42)

print(conn.lrange("mylist",0,-1))

 (3)使用llen获取列表元素的个数

 

print(conn.llen("mylist"))

 

 

 (4)使用linsert在列表的某个值的前后插入一个值

 

 conn.linsert("mylist","before",22,36)

#注意:第一个参数为name,第二个参数为before/after,第三个参数是在某个元素值的前或者后,第四个参数是需要插入的值
print(conn.lrange("mylist",0,-1))

 

 

(5)使用lrem删除list的指定值

conn.lrem("mylist",1,22)
#第二个参数为个数
print(conn.lrange("mylist",0,-1))

 

 

(6)使用lpop移除列表最左侧的元素,并返回

print(conn.lpop("mylist"))

 

 

 

 

(7)使用lindex查询指定索引的的元素,并返回

 print(conn.lindex("mylist",1))

 

 

(8)使用lrange进行切片查询

print(conn.lrange("mylist",0,-1))

 

 


7.python操作set(无序集合)类型

(1)使用sadd进行添加元素到集合中

conn.sadd("myset","a","b","c")
conn.sadd("yourset","b","c","d")

 

(2)使用smembers进行查询集合中的元素

 print(conn.smembers("myset"))

print(conn.smembers("yourset"))

 

 

(3)使用scard进行计算集合中的元素个数

 print(conn.scard("myset"))

print(conn.scard("yourset"))

 

 

(4)使用sdiff进行计算两个集合之间的差集

 print(conn.sdiff("myset","yourset"))

 

 

(5)使用sinter进行计算两个集合之间的交集

 print(conn.sinter("myset","yourset"))


 

 

(6)使用sismember检查当前元素是否存在集合之中

print(conn.sismember("myset","d"))

print(conn.sismember("yourset","d"))

 

 

(7)使用spop从集合右侧删除一个元素

 conn.spop("yourset")

print(conn.smembers('yourset'))

 

 

 

 


8.python操作zset(有序集合)类型

(1)使用zadd进行添加元素到有序集合中

 conn.zadd("zset1",{"a":1,"b":2,"c":3,"d":4})

 

(2)使用zrange返回有序集合范围内的元素

 print(conn.zrange("zset1",0,-1))


 

 

(3)使用zcard进行计算有序集合中的元素个数

 print(conn.zcard("zset1"))


 

 

(4)使用zcount返回有序集合中min--max权重之间的个数

 print(conn.zcount("zset1",2,4))


 

 

(5)使用zscore返回对应权重的元素

print(conn.zscore("zset1","d"))

 

 

 

(6)使用zrem删除有序集合的指定元素

 conn.zrem("zset1","c")

print(conn.zrange("zset1",0,-1))

 

 

 

posted @ 2021-04-05 15:21  小珊子  阅读(461)  评论(0编辑  收藏  举报