1. 库安装与连接
安装
pip install redis
# 安装redis模块
连接
import redis
# 创建Redis连接对象,默认连接到本地的Redis服务器(127.0.0.1:6379)
r = redis.Redis()
# 也可以指定主机和端口进行连接
r = redis.Redis(host='localhost', port=6379)
# 连接到有密码保护的Redis服务器
# 如果Redis服务器设置了密码,需要在连接时提供密码:
r = redis.Redis(host='localhost', port=6379, password='your_password')
端口可以在cmd开启redis服务端时查看,默认为6379
2. 基本操作
字符串操作
这里会更前面的内容有所重复,本文会选择各个数据类型的常用命令进行演示学习,也建议同学们动手自己试试。python
y = r.set("name","申宝啊")
# 这里在redis中设置了一个字符串键值对
# 其中y的返回值为:True
# 在前面的学习中我们了解到redis中字符串的设置会对相同键名进行覆盖,这里需要注意
y2 = r.get("name")
# 获取reids中的指定键值
# 这里返回的是b'\xe7\x94\xb3\xe5\xae\x9d\xe5\x95\x8a',前面的学习中我们也知道redis中的字符串是二进制安全的,即在reids中键和值可以是任意字节序列,他不会对数据做特殊的解释和限制,除了字符串长度限制512M
列表操作
r.delete('mylist')
v = r.lpush('mylist','1',1,2,10)
v2 = r.lrange('mylist',0,-1)
v3 = r.lpop('mylist')
print(v,v2,v3)
# 4 [b'10', b'2', b'1', b'1'] b'10'
v4 = r.lpush('mylist','hello')
v5 = r.rpush('mylist','world')
v6 = r.lpop('mylist')
v7 = r.rpop('mylist')
v8 = r.linsert('mylist','before','10','hhh')
v9 = r.lrange('mylist',0,-1)
# 4 5 b'hello' b'world' -1 [b'2', b'1', b'1']
print(v4,v5,v6,v7,v8,v9)
集合操作
r.delete('myset')
v1 = r.sadd('myset',1,2,3,8,12,45) # 插入集合数据
v2 = r.spop('myset') # 随机获取一个元素
v3 = r.srem('myset',12) # 移除指定的元素
v4 = r.sismember('myset','hello') # 判断元素是否在集合中
v5 = r.scard('myset') # 返回集合长度
v6 = r.smembers('myset') # 查看集合中所有元素
print(v1,v2,v3,v4,v5,v6)
# 6 b'8' 1 0 4 {b'1', b'45', b'3', b'2'}
v7 = r.sadd('myset2',2,5,9,12,45)
v8 = r.sdiff('myset','myset2') # 差集
v9 = r.sinter('myset','myset2') # 交集
v10 = r.sunion('myset','myset2') # 并集
# 5 {b'3', b'8', b'1'} {b'2'} {b'3', b'45', b'2', b'5', b'8', b'9', b'1', b'12'}
哈希操作
r.delete('myhash')
data = {
'user': '申宝啊',
'语言': '中文',
'技术': 'python',
'numb': 1
}
v1 = r.hset('myhash',mapping=data) # 设置hash值
v2 = r.hget('myhash','user') # 获取指定hash值
v3 = r.hmget('myhash','user','技术') # 一次获取多个hash值
v4 = r.hincrby('myhash','numb',2) # 按照指定的步长自增,减少是hdescby
v5 = r.hget('myhash','numb') # 再查看增加后的值
v6 = r.hexists('myhash',1) # 查看是否包含指定对象
v7 = r.expire('myhash',5) # 设置对象的过期时间为5秒
time.sleep(5)
v8 = r.hvals('myhash') # 获取hash中素有元素的值
print(v1,v2,v3,v4,v5,v6,v7)
有序集合操作
data = {
'语文':98,
'数学':88,
'英语':95,
'科学':100,
}
v1 = r.zadd('sset',data) # 向有序集合中添加值
v2 = r.zrange('sset',0,-1) # 获取集合中所有值
v2 = [i.decode('utf-8') for i in v2] # 对获取到的值进行编码
v3 = r.zscore('sset','语文') # 查看语文的值
v4 = r.zrem('sset','科学') # 删除掉科学项
v5 = r.zincrby('sset',5,'英语') # 给英语科目的值增加5
v6 = r.zrevrangebyscore('sset',95,0) # 从大到小查询分数在0-95之间的所有元素
v6 = [i.decode('utf-8') for i in v6]
print(v1,v2,v3,v4,v5,v6)
# 4 ['数学', '英语', '语文', '科学'] 98.0 1 100.0 ['数学']
后续的学习会结合相关案例,并逐渐了解redis特性,更新也会减缓