Redis 与 Python 交互

项目前导 学习笔记

一、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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值