• python-redis之数据类型


    1、字符串操作

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    import redis
    redisDB = redis.Redis(host='127.0.0.1',port=6379,db=0)
    
    '''
    设置值
    set(name, value, ex=None, px=None, nx=False, xx=False)
    参数解释:
        name:键
        value:值
        ex:设置过期时间(单位秒)
        px:设置过期时间(单位毫秒)
        nx:默认为false即无论name是否存在都执行
        xx:默认为false即无论name是否存在都执行
    注意:
        当键不存在时会创建键值对,如果键存在时会覆盖旧的值
    批量设置值:
    mset(key1='value1',key2='value2')
    mset({'key1':'value1','key2':'value2'})
    '''
    print redisDB.set('mystr1','hello')#设置成功返回True
    print redisDB.set('mystr2','hello 222')#设置成功返回True,相同key会覆盖掉以前的
    print redisDB.setex('mystr3','hello 222',5)#设置三秒后失效,返回true设置成功,设置值并设置失效时间
    print redisDB.psetex('mystr4',5,'hello 222')#设置5毫秒后失效,返回true设置成功,设置值并设置失效时间
    print redisDB.mset(key1='value1',key2='value2')#批量设置
    print redisDB.mset({'key1':'value1','key2':'value2'})#批量设置
    '''
    获取值:
        get()#获取单个值
        mget()#批量获取值
    '''
    print redisDB.get('key1')
    print redisDB.mget(['key1','key2'])
    '''
    设置新值,获取旧值
        getset()
    '''
    print redisDB.getset('key1','newvalue')#取到旧值
    print redisDB.getset('key5','newvalue')#取不到,设置新值
    '''
    按照切片进行获取
        getrange()
    '''
    redisDB.set('mystr','111111111111')
    print redisDB.getrange('mystr',0,5)#获取索引0-5
    print redisDB.getrange('mystr',0,30)#如果最大值超过字符串长度则获取整个字符串
    print redisDB.getrange('mystr',30,50)#如果最小值大于字符串长度,则获取为空
    '''
    获取字符串的长度
        strlen()
    '''
    print redisDB.strlen('mystr')#有则返回字符串长度
    print redisDB.strlen('none')#没有键,就返回0
    '''
    编辑字符串的内容
        setrange()
    '''
    print redisDB.set('mystr','111')
    print redisDB.setrange('mystr',1,'2')#范围之内替换
    print redisDB.get('mystr')#121
    print redisDB.setrange('mystr',5,'666')#超出返回添加
    print redisDB.get('mystr')#121666
    print redisDB.setrange('mystr',1,'666666')#从第二个开始替换
    print redisDB.get('mystr')#1666666
    print redisDB.setrange('none',2,'6666')#没有键,以666为值进行设置
    print redisDB.get('none')# 66666
    '''
    给字符串进行追加
        append()
    '''
    print redisDB.set('mystr','000')
    print redisDB.get('mystr')
    print redisDB.append('mystr','111')#返回字符串总长度,并从后进行追加
    print redisDB.get('mystr')
    
    '''
    对字符串为数字的操作
    incr(name,amount)
        name:键
        amount:步长
        设置自增
    decr(name,amount)
        name:键
        amount:步长
        设置自减
    incrbyfloat(name,amount)
        可以设置自增为浮点的数
    '''
    print redisDB.set('mynum',5)
    print redisDB.get('mynum')#5
    print redisDB.incr('mynum',3)#8,返回自增后的结果
    print redisDB.get('mynum')#8
    print redisDB.decr('mynum',5)#3 返回自减后的结果
    print redisDB.get('mynum')#3
    print redisDB.incrbyfloat('mynum',0.5)#3.5 返回自加后的结果
    print redisDB.incrbyfloat('mynum',-0.5)#3.0 返回自减后的结果
    print redisDB.get('mynum')#3.5

    2、列表操作

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    import redis
    redisDB = redis.Redis(host='127.0.0.1',port=6379,db=0)
    '''
    lpush()往左边插入,相当于py的列表insert(0,item)
    '''
    redisDB.lpush('mylist',3)
    redisDB.lpush('mylist',4)
    redisDB.lpush('mylist',5,6,7)
    print redisDB.lrange('mylist',0,-1)#['7', '6', '5', '4', '3']
    '''
    rpush()往右边添加,相当于py的列表append(item)
    '''
    redisDB.rpush('mylist',1)
    redisDB.rpush('mylist',2)
    redisDB.rpush('mylist',3,4,5)
    print redisDB.lrange('mylist',0,-1)#['1', '2', '3', '4', '5']
    '''
    只有当键存在时才进行插入或者追加操作,否则返回0
    rpushx()
    lpushx()
    '''
    redisDB.rpushx('mylist',8)#只有在mylist存在的时候才向右进行追加,没有则返回0
    redisDB.lpushx('mylist',0)#只有在mylist存在的时候才向左进行添加,没有则返回0
    print redisDB.lrange('mylist',0,-1)
    
    '''
    llen()获取列表的长度
    lrang(key,start,end)#按照起始点来进行切片
    lindex()#按照索引取值
    '''
    print redisDB.llen('mylist')
    print redisDB.lrange('mylist',0,redisDB.llen('mylist'))#获取列表所有元素
    print redisDB.lrange('mylist',0,-1)#获取列表所有元素
    print redisDB.lindex('mylist',5)#按照索引取值
    '''
    lpop()#从左边进行pop,列表减少
    rpop()#从右边进行pop,列表减少一个元素
    '''
    print redisDB.lpop('mylist')#从左边进行pop
    print redisDB.rpop('mylist')#从右边进行pop
    print redisDB.lrange('mylist',0,-1)
    
    '''
    linsert(name, where, refvalue, value):
        name:键
        where:before 找到要插入的值(第一个)在值之前插入,after找到要插入的值(第一个)在值之后插入
        refvalue:列表中的值
        value:要插入的值
    '''
    redisDB.linsert('mylist','AFTER',3,'test')#找到第一个为3的元素,在此元素之后插入元素'test'
    '''
    lset(name,index,value)#按照索引对列表中的元素重新赋值
    '''
    redisDB.lset('mylist',5,'new_val')#重新赋值
    '''
    lrem(name,value,num)
        value:值
        num=0#删除所有的value
        num=1#从前往后只删除第一个
        num=-1#从后往前只删除第一个
    '''
    redisDB.lrem('mylist',5,num=0)
    '''
    ltrim(name,start,end)#删除在该索引范围之外的值
    '''
    redisDB.ltrim('mylist',3,5)#只保留索引在3,5之间的数据
    
    
    '''
    rpoplpush(src, dst)#从一个列表中取出最右边添加到另外一个列表的最左边
    '''
    redisDB.rpush('list1',1,2,3)
    redisDB.rpush('list2',1,2,3)
    redisDB.rpoplpush('list1','list2')
    print redisDB.lrange('list2',0,-1)
    '''
    blpop(keys, timeout=0)#表示从左边开始进行pop
    brpop(keys, timeout=0)#表示从右边开始pop
    '''
    redisDB.lpush('list1',1,2,3)
    redisDB.lpush('list2',1,2,3)
    while True:
        print redisDB.blpop(['list1','list2'],timeout=0)
        print redisDB.lrange('list1',0,-1),redisDB.lrange('list2',0,-1)

    3、hash操作

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    import redis
    redisDB = redis.Redis(host='127.0.0.1',port=6379,db=0)
    
    redisDB.hset('myhash','k1','v1')#创建一个hash字典,向字典中添加一组键值对
    print redisDB.hget('myhash','k1')#从hash字典中获取一个值
    
    redisDB.hset('myhash','k1','v')#如果在myhash中有k1就更新k1,否则重新添加键值对
    print redisDB.hgetall('myhash')#获取myhash中所有的键值对
    
    redisDB.hmset('myhash',{'k1':'v1','k2':'v2'})#一次添加多个键值对
    print redisDB.hmget('myhash',['k1','k2'])#一次获取多个键对应的值
    
    print redisDB.hlen('myhash')#获取hash的长度
    print redisDB.hkeys('myhash')#获取hash中的所有key
    print redisDB.hvals('myhash')#获取has中的所有value
    
    print redisDB.hexists('myhash','key')#判断key是否在myhash中
    
    redisDB.hdel('myhash','k1')#删除指定的键值对
    
    redisDB.hincrby('myhash','mynum',amount=1)#将字典中的元素自增
    redisDB.hincrbyfloat('myhash','mynum',amount=1.0)#将字典中的元素自增
  • 相关阅读:
    bzoj 2159 Crash 的文明世界
    bzoj 4241 历史研究
    数论大合集(柿子版)
    [IOI2005]mou
    CSP 2020 T3 函数调用
    线段树 --算法竞赛专题解析(24)
    树状数组 --算法竞赛专题解析(23)
    算法竞赛专题解析(22):数论--同余
    算法竞赛专题解析(21):数论--线性丢番图方程
    算法竞赛专题解析(20):数论--GCD和LCM
  • 原文地址:https://www.cnblogs.com/aadmina/p/9337021.html
Copyright © 2020-2023  润新知