python操作redis

python redis依赖包安装

Windows系统环境下,使用包管理工具pip安装 redis 模块,命令如下:

python -m pip install redis

Linux系统下,需要执行以下命令来安装:

sudo pip3 install redis


python 连接redis

直连模式

import redis
# 本地连接,创建数据库连接对象
r = redis.Redis(host='localhost',port=6379,db=0,password='123456')

连接池模式(推荐)

import redis
//创建连接池并连接到redis,并设置最大连接数量;
conn_pool = redis.ConnectionPool(host='localhost',port=6379,max_connections=10)
//第一个客户端访问
re_pool = redis.Redis(connection_pool=conn_pool)
//第二个客户端访问
re_pool2 = redis.Redis(connection_pool=conn_pool)
...

连接池的作用:当有新的客户端请求连接时,只需要去连接池获取一个连接即可,实际上就是把一个连接共享给多个客户端使用,这样就节省了每次连接所耗费的时间。



python操作redis的一般操作

import redis
r = redis.Redis(host='localhost',port=6379,db=0)
print(r.keys('*'))
key_list = r.keys('*')
#转换为字符串
for key in key_list:
  print(key.decode())
#查看key类型
print(r.type('webname'))
# 返回值: 0 或者 1
print(r.exists('username'))
# 删除key
r.delete('webname')
if "age"  in key_list:
    print("删除失败")
else:
    print("删除成功")

输出:

[b'username', b'webname', b'age', b'password']
username
webname
age
password
b'string'
1
删除成功


pthon操作redis字符串

import redis
#连接redis服务器
r = redis.Redis(host='127.0.0.1',port=6379,db=0)
#key为database
r.set('webname','www.catroom.com.cn')
print(r.get('webname'))
#mset参数为字典
r.mset({'username':'haha','password':'123'})
print(r.mget('username','password'))
#查看value长度
print(r.strlen('username'))

#数值操作
r.set('age','15')
r.incrby('age',5)
r.decrby('age',5)
r.incr('age')
r.decr('age')
r.incrbyfloat('age',5.2)
r.incrbyfloat('age',-10.5)
print(r.get('age'))
#删除key
r.delete('username')

输出:

b'www.catroom.com.cn'
[b'haha', b'123']
5
b'9.69999999999999929'


python操作redis列表

import redis
#建立redis连接
r = redis.Redis(host='localhost',port=6379,db=0)
r.lpush('database','sql','mysql','redis')
r.linsert('database','before','mysql',',mongodb')
print(r.llen('database'))
print(r.lrange('database',0,-1))
print(r.rpop('database'))
#保留指定区间内元素,返回True
print(r.ltrim('database',0,1))
while True:
  # 如果列表中为空时,则返回None
  result = r.brpop('database',1)
  if result:
      print(result)
  else:
      break
r.delete('database')

输出:

4
[b'redis', b',mongodb', b'mysql', b'sql']
b'sql'
True
(b'database', b',mongodb')
(b'database', b'redis')


python操作redis Hash的常用API

# 1、更新一条数据的value,若不存在时,则新建这条数据
hset(key, field, value)
# 2、读取数据的指定字段属性,返回值为字符串类型
hget(key, field)
# 3、批量更新字段属性,参数mapping为字典类型
hmset(key, mapping)
# 4、批量读取数据的字段属性
hmget(key, fields)
# 5、获取这条数据的所有属性字段和对应的值,返回值为字典类型
hgetall(key)
# 6、获取这条数据的所有属性字段,返回值为列表类型
hkeys(key)
# 7、删除这条数据的指定字段
hdel(key, field)

实例:

import redis
r = redis.Redis(host='127.0.0.1',port=6379,db=0)
# 设置一条数据
r.hset('user1','name','www.baidu.com')
# 更新数据
r.hset('user1','name','www.catroom.com.cn')
# 获取数据
print(r.hget('user1','name'))
# 一次性设置多个field和value
user_dict = {
  'password':'666',
  'gender':'M',
  'height':'180cm'
}
r.hmset('user1',user_dict)
# 获取所有数据,字典类型
print(r.hgetall('user1'))
# 获取所有fields字段和所有values值
print(r.hkeys('user1'))
print(r.hvals('user1'))

输出:

b'www.catroom.com.cn'
{b'name': b'www.catroom.com.cn', b'password': b'666', b'gender': b'M', b'height': b'180cm'}
[b'name', b'password', b'gender', b'height']
[b'www.catroom.com.cn', b'666', b'M', b'180cm']


python操作redis set api总结

#1、给name对应的集合中添加元素
sadd(name,values)
e.g.
r.sadd("set_name","tom")
r.sadd("set_name","tom","jim")

#2、获取name对应的集合的所有成员
smembers(name)
e.g.
r.smembers('set_name')

#3、获取name对应的集合中的元素个数
scard(name)
e.g.
r.scard("set_name")

#4、检查value是否是name对应的集合内的元素,返回值为True或False
sismember(name, value)
e.g.
r.sismember('set_name','tom')

#5、随机删除并返回指定集合的一个元素
spop(name)
e.g.
member = r.spop('set_name')

#6、删除集合中的某个元素
srem(name, value)
r.srem("set_name", "tom")

#7、获取多个name对应集合的交集
sinter(keys, *args)
e.g.
r.sadd("set_name","a","b")
r.sadd("set_name1","b","c")
r.sadd("set_name2","b","c","d")

print(r.sinter("set_name","set_name1","set_name2"))
#输出:{b'b'}

#8、获取多个name对应的集合的并集
sunion(keys, *args)
e.g.
r.sunion("set_name","set_name1","set_name2")