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

posted on 2018-07-20 10:18  邓国神韵  阅读(436)  评论(0编辑  收藏  举报

导航