Python 操作redis 常用方法

Python 操作redis

1.字符串

复制代码
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import redis


# python 操作str
class TestString(object):
    """
    set --设置值
    get --获取值
    mset --设置多个键值对
    mget --获取多个键值对
    append --添加字符串
    del --删除
    incr/decr -- 增加/减少 1
    """

    def __init__(self):
        self.r = redis.StrictRedis(host='localhost', port=6379, db=0)

    def test_set(self):
        rest = self.r.set('user2', 'Amy')
        print rest
        return rest

    def test_get(self):
        rest = self.r.get('user2')
        print rest
        return rest

    def test_mset(self):
        """
        mset --设置多个键值对
        :return:
        """
        d = {
            'user1': 'XH',
            'user3': 'Bob',
            'user4': 'Bobx'
        }
        rest = self.r.mset(d)
        print rest
        return rest

    def test_mget(self):
        """
        mget --获取多个键值对
        :return:
        """
        l = ['user1','user2','user3','user4','user6']
        rest = self.r.mget(l)
        print rest
        return rest

    def test_del(self):
        """
        del 删除
        :return:
        """
        rest = self.r.delete('user1')
        print rest
        return rest


def main():
    str_obj = TestString()
    str_obj.test_set()
    str_obj.test_get()
    str_obj.test_mset()
    str_obj.test_mget()
    str_obj.test_del()



if __name__ == '__main__':
    main()
复制代码

 

2.列表 

复制代码
class TestList(object):
    """
    lpush/rpush --从左/右插入数据
    lrange -- 获取指定长度的数据
    ltrim -- 截取一定长度的数据
    lpop/rpop -- 移除最左/右的元素并返回
    lpushx/rpushx -- key存在的时候才插入数据,不存在不做任何处理
    """

    def __init__(self):
        self.r = redis.StrictRedis(host='localhost', port=6379, db=0)

    def test_push(self):
        """
        lpush/rpush --从左/右插入数据
        lrange -- 获取指定长度的数据
        :return:
        """
        t = ('Amy', 'Jhon')
        reset = self.r.lpush('l_eat2', *t)
        print reset
        reset = self.r.lrange('l_eat2', 0, -1)
        print reset

    def test_pop(self):
        """
        lpop/rpop -- 移除最左/右的元素并返回
        :return:
        """
        rest = self.r.lpop('l_eat2')
        print rest

        reset = self.r.lrange('l_eat2', 0, -1)
        print reset


def main():
    # list
    list_obj = TestList()
    #list_obj.test_push()
    list_obj.test_pop()


if __name__ == '__main__':
    main()
复制代码

 

3.集合

复制代码
class TestSet(Base):
    """
    sadd/srem --添加/删除元素
    sismember --判断是否为set的一个元素
    smembers --返回该集合的所有成员
    sdiff --返回一个集合与其他集合的差异
    sinter --返回几个集合的交集
    sunion --返回几个集合的并集
    """
    def test_sadd(self):
        """
        sadd/srem --添加/删除元素
        :return:
        """
        l = ['Cats', 'Dogs']
        rest = self.r.sadd('zoo3', *l)
        print rest
        rest = self.r.smembers('zoo3')
        print rest

    def test_srem(self):
        """
        sadd/srem --添加/删除元素
        :return:
        """
        rest = self.r.srem('zoo2','Dogs')
        print rest
        rest = self.r.smembers('zoo2')
        print rest

    def test_sinter(self):
        """
        sinter --返回几个集合对象的交集
        sunion --返回几个集合对象的并集
        :return:
        """
        rest = self.r.sunion('zoo2', 'zoo3')
        print rest
        rest = self.r.sinter('zoo2','zoo3')
        print rest


def main():
    test_obj = TestSet()
    test_obj.test_sadd()
    test_obj.test_srem()
    test_obj.test_sinter()

if __name__ == '__main__':
    main()
复制代码

 

4.散列

复制代码
class TestHash(Base):
    """
    hset/hget --设置/获取散列值
    hmset/hmget --设置/获取多对散列值
    hsetnx --如果散列已经存在,则不设置
    hkeys/hvals --返回所有Keys/Values
    hlen -- 返回散列包含域
    """

    def test_set(self):
        """
        hset/hget --设置/获取散列值
        :return:
        """
        reset = self.r.hset('stu:xxx01','name','Amy')
        print reset
        reset = self.r.hexists('stu:xxx01','name')
        print reset
        reset = self.r.hget('stu:xxx01','name')
        print reset

    def test_mset(self):
        """
        hmset/hmget --设置/获取多对散列值
        :return:
        """
        m = {
            'name':'Bob',
            'age':21,
            'grade':98
        }
        rest = self.r.hmset('stu:xxx03',m)
        print rest
        rest = self.r.hkeys('stu:xxx03')
        print rest
        

def main():
    hash_obj = TestHash()
    hash_obj.test_set()
    hash_obj.test_mset()

if __name__ == '__main__':
    main()
复制代码

 

posted on   星河赵  阅读(538)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示