zoukankan      html  css  js  c++  java
  • python-redis之数据类型二

    1、无序集合

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    import redis
    redisDB = redis.Redis(host='127.0.0.1',port=6379,db=0)
    
    '''
    sadd()#添加元素
    '''
    redisDB.sadd('myset','1')#添加元素
    redisDB.sadd('myset','2','3','4')#添加元素
    '''
    smembers(key)#获取所有元素
    sinter(key)#获取所有元素;另外功能有获取交集
    scard(key)#获取长度
    '''
    print redisDB.smembers('myset')#获取所有的元素
    print redisDB.scard('myset')#获取长度
    print redisDB.sinter('myset')#获取所有元素
    
    '''
    sdiff(key,*args)#取到第一个第一个集合中存在而其他集合中不存在的元素;差集
    '''
    redisDB.sadd('myset1','1','2')
    redisDB.sadd('myset2','2','3')
    redisDB.sadd('myset3','2','3')
    print redisDB.sdiff('myset1','myset2','myset3')#输出1
    '''
    sdiffstore(dest,keys,*args)
        dest:存储的键
        keys:对比的第一个键
        *args:对比的键
    '''
    redisDB.sdiffstore('store_key','myset1','myset2','myset3')#获取差集并存储
    print redisDB.sinter('store_key')#1 将对比后的结果存储在store_key中
    
    '''
    sinter(keys,*args)#获取交集
    '''
    print redisDB.sinter('myset1','myset2','myset3')#2 获取交集
    
    '''
    sinterstore(dest,keys,*args)#获取交集并进行存储
    '''
    redisDB.sinterstore('sinter_key','myset1',*('myset2','myset3'))
    print redisDB.smembers('sinter_key')#2 获取到交集并进行存储
    '''
    sunion()#获取并集
    sunionstore()#获取并集并进行存储
    '''
    print redisDB.sunion('myset1','myset2','myset3')
    redisDB.sunionstore('union_key','myset1','myset2','myset3')
    print redisDB.smembers('union_key')#set(['1', '3', '2'])
    
    '''
    sismember()#判断某一个值是否在集合中
    '''
    print redisDB.sismember('myset1','1')#true在
    
    '''
    smove(src, dst, value)#将src中的一个元素移动到dst中;剪切
    '''
    redisDB.smove('myset1','myset2',1)
    print redisDB.smembers('myset1')
    print redisDB.smembers('myset2')
    
    '''
    spop()#从集合的右侧移除元素
    '''
    redisDB.spop('myset1')
    '''
    srandmember(name,numbers)#随机获取几个元素
    '''
    print redisDB.srandmember('myset1',5)#随机获取5个元素
    
    '''
    srem(name,values)#删除集合中的某些值
    '''
    redisDB.srem('myset1','1','2')

    2、有序集合

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    import redis
    redisDB = redis.Redis(host='127.0.0.1',port=6379,db=0)
    
    '''
    zadd(name,*args,**kwargs)
        name:键
        args:以元祖或者列表的形式传值
        kwargs:字典
        注意对于有序集合来讲每一个元素有两个值,即:值和分数,分数是用来做排序使用的。b1=1 b1是值,1是分数
        下面为几种添加方式:
    '''
    redisDB.zadd('sorted_set','a1','1','a2','2')
    redisDB.zadd('sorted_set',*('a1','1','a2','2'))
    redisDB.zadd('sorted_set',**{'b1':'1','b2':'2'})
    redisDB.zadd('sorted_set',b1='1',b2='2')
    '''
    zrange(name, start, end, desc=False, withscores=False,score_cast_func=float)获取有序集合中的元素
        参数解释:
            name:键
            start:分数起始
            end:分数结尾
            desc:排序规则,默认按照分数从小到大排序
            withscores:是否获取元素的分数,默认只获取元素的值
            score_cast_func:对分数进行转换的函数,默认为float
    '''
    print redisDB.zrange('sorted_set',0,-1,withscores=True)#获取所有包括值和分数
    print redisDB.zrange('sorted_set',0,redisDB.zcard('sorted_set'))#获取所有
    '''
    zcard()是用来获取集合中所有的元素数目即集合的长度
    '''
    redisDB.zadd('sorted_set1','aa',1,'bb',2)
    print redisDB.zcard('sorted_set1')#获取集合长度
    '''
    zcount(name,main,max)#获取最小分数和最大分数之间值的数目
    '''
    redisDB.zadd('sorted_set2','aa',1,'bb',2,'cc',3,'dd',4,'ee',5)
    print redisDB.zcount('sorted_set2',min=1,max=2)#获取分数在1-2之间元素的个数
    '''
    zincrby()自增某一元素的值
    '''
    redisDB.zadd('sorted_set3','1',1,'2',2,'aa',3)
    print redisDB.zincrby('sorted_set3','1',amount=5)
    print redisDB.zrange('sorted_set3',0,-1,)
    '''
    zscan()获取所有的值及分数
    '''
    print redisDB.zscan('sorted_set3')
    
    '''
    zrank()#获取某一值的排序位置,正序
    zrevrank()#获取某一值的排序位置,反序
    '''
    redisDB.zadd('sorted_set4','a1',0,'a2',1,'a3',3,'a4',4,'a5',5)
    print redisDB.zrank('sorted_set4','a1')#0
    print redisDB.zrevrank('sorted_set4','a1')#4
    '''
    zscore()获取某一值的分数
    '''
    print redisDB.zscore('sorted_set4','a1')
    
    '''
    zrem()删除有序集合中的值
    '''
    redisDB.zadd('sorted_set5','a1',0,'a2',1,'a3',2,'a4',3,'a5',4)
    print redisDB.zscan('sorted_set5')#(0L, [('a1', 0.0), ('a2', 1.0), ('a3', 2.0), ('a4', 3.0), ('a5', 4.0)])
    redisDB.zrem('sorted_set5','a1','a2')
    print redisDB.zscan('sorted_set5')#(0L, [('a3', 2.0), ('a4', 3.0), ('a5', 4.0)])
    
    '''
    zinterstore(dest, keys, aggregate=None)#取两个集合的交集并放入到dest中
    '''
    redisDB.zadd('sorted_set6','a1',0,'a2',1)
    redisDB.zadd('sorted_set7','a1',0,'a2',1,'a3',2)
    redisDB.zinterstore('sorted_temp',('sorted_set6','sorted_set7'))
    print redisDB.zscan('sorted_temp')#(0L, [('a1', 0.0), ('a2', 2.0)])
    '''
    zunionstore(dest, keys, aggregate=None)#取两个集合的并集并放入到dest中
    '''
    redisDB.zunionstore('sorted_temp1',('sorted_set6','sorted_set7'))
    print redisDB.zscan('sorted_temp1')#(0L, [('a1', 0.0), ('a2', 2.0), ('a3', 2.0)])

    3、其他操作

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    import redis
    redisDB = redis.Redis(host='127.0.0.1',port=6379,db=0)
    
    '''
    公共操作
    '''
    redisDB.keys()#获取到所有的键
    redisDB.exists('mykey')#判断某个键是否存在
    redisDB.delete('mykey')#删除某个键
    redisDB.expire('mykey',5)#为某个键设置超时时间
    redisDB.rename('old_name','new_name')#修改键的名字
    redisDB.randomkey()#随机获取一个键
    redisDB.type('mykey')#获取某个键对应的值的类型,注意此type非python中的type
    redisDB.move('mykey',db=0)#将mykey从当前库移动到其他库中
    
    '''
    获取长度的
    '''
    redisDB.strlen('mystr')#获取字符串长度
    redisDB.llen('mylist')#获取列表长度
    redisDB.hlen('myhash')#获取散列表长度
    redisDB.scard('myset')#获取集合长度
    redisDB.zcard('mysorted_set')#获取有序集合长度
    '''
    获取值的
    '''
    redisDB.get('mystr')#获取字符串值
    redisDB.lrange('mylist',0,-1)#获取列表值
    redisDB.lrange('mylist',0,redisDB.llen('mylist'))
    redisDB.hkeys('myhash')#获取散列表所有键
    redisDB.hvals('myhash')#获取散列表值
    redisDB.hgetall('myhash')#获取散列表所有
    redisDB.smembers('myset')#获取集合所有成员
    redisDB.zrange('mysorted_set',0,-1,withscores=True)#获取有序集合所有成员
    redisDB.zscan('mysorted_set')
    redisDB.zrange('mysorted_set',0,redisDB.zcard('mysorted_set'))

     参考博客:

    http://www.cnblogs.com/xuchunlin/p/7097255.html

    https://www.cnblogs.com/melonjiang/p/5342505.html

  • 相关阅读:
    linux常用命令---文件操作
    Django 框架中定时触发脚本
    jquery 中选择当前标签下众多相同子标签中的第n个
    Django + DRF + Elasticsearch 实现搜索功能
    django 使用celery 实现异步任务
    python 通过 pymysql模块 操作 mysql 数据库
    django 自定义中间件 middleware
    django 使用其自带的验证系统 进行用户名有效性验证 登录状态验证 登入操作 登出操作
    python脚本 读取excel格式文件 并进行处理的方法
    python 将json格式的数据写入csv格式的文件中
  • 原文地址:https://www.cnblogs.com/aadmina/p/9340025.html
Copyright © 2011-2022 走看看