项目前导 学习笔记
一、Python 操作 Redis
1.1、redispy 安装及连接
- 安装
pip install redis
- 连接
# 连接本机服务器的话, 四种写法都一样
# StrictRedis() 与 Redis() 方法也没什么区别
r = redis.StrictRedis(host='localhost',port=6379,db=0)
r = redis.Redis(host='127.0.0.1',port=6379,db=0)
r = redis.StrictRedis()
r = redis.Redis()
1.2、字符串相关操作
import redis
class TestString(object):
def __init__(self):
self.r = redis.Redis()
# 设置值
def test_set(self, keys, value):
res = self.r.set(keys, value)
# 返回布尔值
return res
# 取值
def test_get(self, keys):
if self.r.exists(keys):
res = self.r.get(keys)
return res
# 主动抛出异常
raise ValueError(f"{keys} is not found")
# 设置多个值
def test_mset(self, dicts):
if isinstance(dicts, dict):
res = self.r.mset(dicts)
# 取多个值
def test_mget(self, lis):
res = self.r.mget(lis)
print(res)
# 删除
def test_del(self, keys):
if self.r.exists(keys):
self.r.delete(keys)
return
raise ValueError("{} is not found".format(keys))
if __name__ == '__main__':
res = TestString()
"""设值"""
print("\n设值")
r_set = res.test_set('name', 'li')
# print(r_set)
"""取值"""
print("\n取值")
r_get = res.test_get('name')
# r_get2 = res.test_get('nme')
print(r_get, type(r_get))
"""设多个值"""
print("\n设多个值")
dic = {'id':1, 'age':18}
res.test_mset(dic)
print(res.test_get('age'))
"""取多个值"""
print("\n取多个值")
lis = ['id', 'name', 'age']
res.test_mget(lis)
"""删除值"""
print("\n删除值")
res.test_del('id')
res.test_mget(lis)
1.3、列表相关操作
import redis
class TestList(object):
def __init__(self):
self.r = redis.Redis()
# 从左边插入记录
def test_lpush(self, keys, value):
for i in value:
res = self.r.lpush(keys, i)
# 从右边插入记录
def test_rpush(self, keys, value):
for i in value:
res = self.r.rpush(keys, i)
# 弹出最左记录
def test_lpop(self, keys):
res = self.r.lpop(keys)
print(res)
# 弹出最右记录
def test_rpop(self, keys):
res = self.r.rpop(keys)
print(res)
# 查看所有值
def test_range(self, keys):
res = self.r.lrange(keys, 0, -1)
print(res)
if __name__ == '__main__':
res = TestList()
"""插入记录"""
print("\n插入记录")
res.test_lpush('lis1', [1,2,3,4,5])
res.test_rpush('lis2', [1,2,3,4,5])
"""查看记录"""
print("\n查看记录")
res.test_range('lis1')
res.test_range('lis2')
"""弹出记录"""
print("\n弹出记录")
res.test_lpop('lis1')
res.test_rpop('lis2')
res.test_range('lis1')
res.test_range('lis2')
1.4、集合相关操作
import redis
class TestSet(object):
def __init__(self):
self.r = redis.Redis()
# 逐个添加数据
def test_sadd(self, keys, value):
res = self.r.sadd(keys, value)
# 列表添加数据
def test_sadd2(self, keys, lis):
for i in lis:
res = self.r.sadd(keys, i)
# 读取数据
def test_smembers(self, keys):
res = self.r.smembers(keys)
print(res)
# 随机读取指定个数数据(默认读 1 个)
def test_srandmember(self, keys, count=1):
res = self.r.srandmember(keys, count)
print(res)
# 删除指定数据
def test_del(self, keys, value):
res = self.r.srem(keys, value)
print(res)
# 随机删除数据
def test_spop(self, keys):
res = self.r.spop(keys)
print(res)
if __name__ == '__main__':
res = TestSet()
"""添加数据"""
print("\n添加数据")
res.test_sadd('set1', 66)
res.test_sadd('set1', 'a')
res.test_sadd('set1', 88)
res.test_sadd2('set2', [4,7,9,1,0,6,5,'o','i'])
"""读取数据"""
print("\n读取数据")
res.test_smembers('set1')
res.test_smembers('set2')
res.test_srandmember('set1')
res.test_srandmember('set2')
res.test_srandmember('set2', 3)
"""指定删除数据"""
print("\n指定删除数据")
res.test_del('set1', 'a 88')
"""随机删除"""
print("\n随机删除")
res.test_spop('set2')
res.test_smembers('set2')
1.5、哈希相关操作
import redis
class TestHash(object):
def __init__(self):
self.r = redis.Redis()
# 批量设值
def test_hset(self, keys, dic):
if isinstance(dic, dict):
res = self.r.hmset(keys, dic)
print(res)
# 批量取值
def test_hgetall(self, keys):
res = self.r.hgetall(keys)
print(res)
# 判断是否存在 存在返回 1 不存在返回 0
def test_hexists(self, keys, value):
res = self.r.hexists(keys, value)
print(res)
if __name__ == '__main__':
res = TestHash()
"""批量设值"""
print("\n批量设值")
dic = {'id':2, 'name':'li', 'age':18}
res.test_hset('huser', dic)
"""批量取值"""
print("\n批量取值")
res.test_hgetall('huser')
"""判断是否存在"""
print("\n判断是否存在")
res.test_hexists('huser', 'name')
res.test_hexists('huser', 'a')

178

被折叠的 条评论
为什么被折叠?



