zoukankan      html  css  js  c++  java
  • python redis-string、list、set操作

    string操作

    redis中的string在内存中都是按照一个key对应一个value来存储的

    方法:

    set() 方法 : 写入一条数据

    mset() 方法: 写入多条数据 , 可是Key-Value 的形式,也可以传入字典

    get() 方法:获取一个值

    mget() 方法: 获取多个值

    keys() 方法: 获取所有的key

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # @Time   : 2017/11/28 23:37
    # @Author : lijunjiang
    # @File   : redis-string.py
    
    import datetime
    import redis
    
    redis_info = {
        'host': '11.11.11.11',
        'port': 6379
    }
    
    def conncet_redis():
        pool = redis.ConnectionPool(**redis_info)
        try:
            r = redis.Redis(connection_pool=pool)
        except Exception as err:
            raise err
        return r
    
    r = conncet_redis()
    
    # set() 方法 : 写入一条数据
    r.set('name','lijunjiang')
    
    # mset() 方法: 写入多条数据 , 可是Key-Value 的形式,也可以传入字典
    # Key-Value 的形式
    r.mset(f_name='li',l_name='junjiang')
    # 字典形式
    r.mset({'age':'20','sex':'Man'})
    
    # get() 方法:获取一个值
    _get = r.get('name')
    print('get:{0}'.format(_get))
    # mget() 方法: 获取多个值
    _mget = r.mget('l_name', 'f_name')
    print('mget:{0}'.format(_mget))
    
    # keys() 方法: 获取所有的key
    _keys = r.keys()
    print('keys: {0}'.format(_keys))
    
    #################
    C:Python27python.exe D:/Python/redis/redis-string.py
    get:lijunjiang
    mget:['junjiang', 'li']
    keys: ['name', 'f_name', 'l_name', 'age', 'sex']
    
    Process finished with exit code 0
    
    

    list 操作

    redis中的List在在内存中按照一个name对应一个List来存储

    方法:

    lpush(name,values)
            # 在name对应的list中添加元素,每个新的元素都添加到列表的最左边
    
    
    rpush() 
           # 在name对应的list中添加元素,每个新的元素都添加到列表的最左边
    
    lpushx(name,value)
            #在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边
    
    rpushx(name,value)
            #在name对应的list中添加元素,只有name已经存在时,值添加到列表的最右边
    
    llen(name)
            # name对应的list元素的个数
    
    linsert(name,where,refvalue,value):
            #在name对应的列表的某一个值前后插入一个新值
                    #参数:
                         # name,redis的name
                         # where,BEFORE或AFTER
                         # refvalue,标杆值,即:在它前后插入数据
                         # value,要插入的数据
    
    r.lset(name,index,value):
             #对name对应的list中的某一个索引位置重新赋值。
                   # 参数:
                         # name,redis的name
                         # index,list的索引位置
                         # value,要设置的值
    
    r.lrem(name,value,num):
            #在name对应的list中删除指定的值
                    # 参数:
                        # name,redis的name
                        # value,要删除的值
                        # num,  num=0,删除列表中所有的指定值;
                               # num=2,从前到后,删除2个;
                               # num=-2,从后向前,删除2个
    
    lpop(name):
            #在name对应的列表的左侧获取第一个元素并在列表中移除,返回值删除那个元素的值
            #扩展: rpop(name) 表示从右向左操作
    
    lindex(name,index):
            #在name对应的列表中根据索引取列表元素
    
    lrange(name,start,end):
            #在name对应的列表分片获取数据
    
    
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # @Time   : 2017/11/29 0:16
    # @Author : lijunjiang
    # @File   : redis-list.py
    
    import datetime
    import redis
    
    redis_info = {
        'host': '11.11.11.11',
        'port': 6379
    }
    
    def conncet_redis():
        pool = redis.ConnectionPool(**redis_info)
        try:
            r = redis.Redis(connection_pool=pool)
        except Exception as err:
            raise err
        return r
    
    r = conncet_redis()
    # list 左右插入元素
    
    r.lpush("info",'lijunjiang')
    r.lpush('info','li')
    r.rpush('info','junjiang')
    print(r.lrange('info',0,-1))
    # ['li', 'lijunjiang', 'junjiang']
    
    # 在某个元素前/后位置插入元素
    
    r.linsert('info','BEFORE','li','f_name')
    print(r.lrange('info',0,-1))
    # ['f_name', 'li', 'lijunjiang', 'junjiang']
    
    r.linsert('info', 'AFTER', 'lijunjiang','f_name')
    print(r.lrange('info',0,-1))
    # ['f_name', 'li', 'lijunjiang', 'f_name', 'junjiang']
    
    # 更改某个元素的值
    r.lset('info',2,'myname-lijunjiang')
    print(r.lrange('info',0,-1))
    # ['f_name', 'li', 'myname-lijunjiang', 'f_name', 'junjiang']
    
    #查看某个下标的值
    print(r.lindex('info',2))
    # myname-lijunjiang
    
    # 从最左边删除一个元素,并返回一个元素的值
    print(r.lpop('info'))
    # f_name
    print(r.lrange('info',0,-1))
    # ['li', 'myname-lijunjiang', 'f_name', 'junjiang']
    
    # 删除列表中所有指定的值
    r.lpush('info',1,2,2,3,3,3)
    r.rpush('info',1,2,2,3,3,3)
    print(r.lrange('info',0,-1))
    # ['3', '3', '3', '2', '2', '1', 'li', 'myname-lijunjiang', 'f_name', 'junjiang', '1', '2', '2', '3', '3', '3']
    r.lrem('info',1)
    print(r.lrange('info',0,-1))
    # ['3', '3', '3', '2', '2', 'li', 'myname-lijunjiang', 'f_name', 'junjiang', '2', '2', '3', '3', '3']
    r.lrem('info', 3, 2)
    print(r.lrange('info',0,-1))
    # ['3', '2', '2', 'li', 'myname-lijunjiang', 'f_name', 'junjiang', '2', '2', '3', '3', '3']
    r.lrem('info', 3, -2)
    print(r.lrange('info',0,-1))
    # ['3', '2', '2', 'li', 'myname-lijunjiang', 'f_name', 'junjiang', '2', '2', '3']
    
    ##########
    C:Python27python.exe D:/Python/redis/redis-list.py
    ['li', 'lijunjiang', 'junjiang']
    ['f_name', 'li', 'lijunjiang', 'junjiang']
    ['f_name', 'li', 'lijunjiang', 'f_name', 'junjiang']
    ['f_name', 'li', 'myname-lijunjiang', 'f_name', 'junjiang']
    myname-lijunjiang
    f_name
    ['li', 'myname-lijunjiang', 'f_name', 'junjiang']
    ['3', '3', '3', '2', '2', '1', 'li', 'myname-lijunjiang', 'f_name', 'junjiang', '1', '2', '2', '3', '3', '3']
    ['3', '3', '3', '2', '2', 'li', 'myname-lijunjiang', 'f_name', 'junjiang', '2', '2', '3', '3', '3']
    ['3', '2', '2', 'li', 'myname-lijunjiang', 'f_name', 'junjiang', '2', '2', '3', '3', '3']
    ['3', '2', '2', 'li', 'myname-lijunjiang', 'f_name', 'junjiang', '2', '2', '3']
    
    Process finished with exit code 0
    

    set集合就是不重复的列表

    sadd(name,values)
    #给name对应的集合中添加元素
    r.sadd("set_name","aa")
    r.sadd("set_name","aa","bb")
    
    smembers(name)
    #获取name对应的集合的所有成员
    
    scard(name)
    #获取name对应的集合中的元素个数
    
    r.scard("set_name")
    sinter(keys, *args)
    # 获取多个name对应集合的并集
    
    r.sadd("set_name","aa","bb")
    r.sadd("set_name1","bb","cc")
    r.sadd("set_name2","bb","cc","dd")
    
    print(r.sinter("set_name","set_name1","set_name2"))
    #输出:{bb}
    
    sismember(name, value)
    #检查value是否是name对应的集合内的元素
    
    spop(name)
    #随机删除并返回指定集合的一个元素
    
    sunion(keys, *args)
    #获取多个name对应的集合的并集
    
    r.sunion("set_name","set_name1","set_name2")
    srem(name, value)  删除集合中的某个元素
    r.srem("set_name", "aa")
    
    
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # @Time   : 2017/11/29 0:55
    # @Author : lijunjiang
    # @File   : redis-set.py
    import datetime
    import redis
    
    redis_info = {
        'host': '11.11.11.11',
        'port': 6379
    }
    
    def conncet_redis():
        pool = redis.ConnectionPool(**redis_info)
        try:
            r = redis.Redis(connection_pool=pool)
        except Exception as err:
            raise err
        return r
    
    r = conncet_redis()
    
    # sadd(name,values)  向集合中添加元素
    r.sadd('set_name','aa')
    r.sadd('set_name','bb')
    
    # smembers(name) 获取name对应的集合的所有成员获取name对应的集合的所有成员
    print(r.smembers('set_name'))
    # set(['aa', 'bb'])
    
    # scard(name) 获取name对应的集合中的元素个数
    print(r.scard('set_name'))
    # 2
    
    # sinter(keys, *args)   获取多个name对应集合的交集
    r.sadd('set_2','aa','bb','cc')
    r.sadd('set_3','cc','dd', 'aa')
    
    print(r.sinter('set_name', 'set_2', 'set_3'))
    # set(['aa'])
    
    # sismember(name, value) 检查value是否是name对应的集合内的元素
    # print(r.sismember(r.sinter('set_name', 'set_2', 'set_3'), 'aa'))   # False
    # # print(r.smembers('set_tmp'))    # set[]
    # # print(r.sismember('set_tmp', 'aa'))    # False
    # print(r.sismember(r.sadd('set_tmp', r.sinter('set_name', 'set_2', 'set_3')), 'aa')) # False
    
    print(r.sismember('set_name','aa'))  # True
    print(r.sismember('set_name','cc'))  # False
    
    # spop(name) 随机删除并返回指定集合中的元素
    r.sadd('set_tmp','AA', 'BB', 'CC', 'DEL')
    print(r.smembers('set_tmp'))
    print(r.spop('set_tmp'))
    print(r.smembers('set_tmp'))
    
    # sunion(keys, *args) 获取多个name对应的集合的并集
    print(r.sunion('set_name','set_2','set_3'))
    # set(['aa', 'cc', 'dd', 'bb'])
    
    #############
    C:Python27python.exe D:/Python/redis/redis-set.py
    set(['aa', 'bb'])
    2
    set(['aa'])
    True
    False
    set(['AA', 'CC', 'DEL', 'BB'])
    CC
    set(['AA', 'DEL', 'BB'])
    set(['aa', 'cc', 'dd', 'bb'])
    
    Process finished with exit code 0
    
  • 相关阅读:
    Android6.0以后动态增加权限
    Failed to resolve: junit:junit:4.12
    tflite
    error: undefined reference to `cv::imread(std::string const&, int)'
    Makefile
    tf模型可视化工具
    linux c++下遍历文件
    mobilenetV3
    centos7安装mxnet
    chrome的一些插件
  • 原文地址:https://www.cnblogs.com/lijunjiang2015/p/7912941.html
Copyright © 2011-2022 走看看