zoukankan      html  css  js  c++  java
  • Redis自学笔记:5.实践

    第5章实践

    5.3 python与redis

    5.3.1安装

    pip install redis

    5.3.2使用方法

    • 自己补充内容:Ubuntu下redis开启远程连接
      1. 打开redis配置:sudo vi /etc/redis/redis.conf
      2. 注释掉"bind 127.0.0.1",或者修改为"bind 0.0.0.0"
      3. 重启redis服务:sudo /etc/init.d/redis-server restart
    import redis
    r = redis.StrictRedis('176.216.1.139',6379,0)
    r.set('foo','Hello Python')
    print(r.get('foo'))
    

    其他教程

    博客地址:http://www.cnblogs.com/cnkai/p/7642787.html
    博客地址:https://www.cnblogs.com/clover-siyecao/p/5600078.html

    1. key操作

      • exists(name)
        判断一个key是否存在,返回值1或0

        In [1]: import redis
        In [2]: r = redis.StrictRedis('176.216.1.139',6379,0)
        In [3]: r.exists('book')
        Out[3]: 1
        In [4]: r.exists('bok')
        Out[4]: 0
        
      • delete(name)
        删除一个key,返回值1或0

        In [5]: r.delete('dict')
        Out[5]: 1
        In [6]: r.delete('dict')
        Out[6]: 0
        
      • type(name)
        判断key类型

        In [7]: r.type('book')
        Out[7]: b'list' 
        
      • keys(pattern)
        获取所有符合规则的key,以列表形式返回库内所有的key.

        In [8]: r.keys()
        Out[8]:
        [b'book:Sanguo',
        b'book.view',
        b'bok:Sanguo',
        b'book:Python',
        b'bok:Python',
        b'bok:Tangshi',
        b'foo',
        b'book',
        b'book:Tangshi']
                  
        In [9]: r.keys('book:*')
        Out[9]: [b'book:Sanguo', b'book:Python', b'book:Tangshi']
        
      • randomkey()
        随机获取一个key

        In [10]: r.randomkey()
        Out[10]: b'book:Sanguo'
        In [11]: r.randomkey()
        Out[11]: b'bok:Tangshi'
        
      • rename(src, dst)
        将key重命名,修改成功返回True.

        In [15]: r.rename('dict','dictt')
        Out[15]: True
        
      • dbsize()
        获取当前数据库可以的数目

        In [23]: r.dbsize()
        Out[23]: 10
        
      • expire(name, time)
        设定key的过程时间,单位是秒,设置成功返回True

        In [27]: r.expire('dictt',300)
        Out[27]: True   
        
      • ttl(name)
        获取key的过程时间,单位秒.-2表示该键不存在,-1表示未设置过期时间

        In [28]: r.ttl('dictt')
        Out[28]: 247
        In [29]: r.ttl('dict')
        Out[29]: -2
        In [30]: r.ttl('book')
        Out[30]: -1       
        
      • move(name, db)
        将key移动到其他数据库,成功返回True

        In [31]: r.move('dictt',1)
        Out[31]: False
        In [32]: r.move('foo',1)
        Out[32]: True
        
      • flushdb()
        删除删除当前选择数据库中的所有key,成功返回True

      • flushall()
        删除所有数据库中的所有key,成功返回True

    2. String操作

      • set(name, value)
        给key赋值为value或者创建key赋值为value

        In [33]: r.set('foo','春江潮水连海平')
        Out[33]: True
        
      • get(name)
        返回数据库中key为name的string的value

        In [35]: r.get('foo')
        Out[35]: b'xe6x98xa5xe6xb1x9fxe6xbdxaexe6
                xb0xb4xe8xbfx9exe6xb5xb7xe5xb9xb3'
        In [36]: r.get('foo').decode()
        Out[36]: '春江潮水连海平
        
      • getset(name, value)
        给数据库中key为name的string赋予值value并返回上次的value

        In [39]: r.getset('foo','海上明月共潮生').decode()
        Out[39]: '春江潮水连海平'
        In [40]: r.get('foo').decode()
        Out[40]: '海上明月共潮生'
        
      • mget(keys, *args)
        以列表形式返回多个key对应的value

        In [41]: r.set('bar','滟滟随波千万里')
        Out[41]: True
        In [42]: r.mget('foo','bar')
        Out[42]:
        [b'xe6xb5xb7xe4xb8x8axe6x98x8exe6x9cx88
        xe5x85xb1xe6xbdxaexe7x94x9f',
        b'xe6xbbx9fxe6xbbx9fxe9x9ax8fxe6xb3xa2
        xe5x8dx83xe4xb8x87xe9x87x8c']
        
      • setnx(name, value)
        如果key不存在才设置value

        In [44]: r.setnx('foo','何处春江无月明')
        Out[44]: False  
        
      • setrange(name, offset, value)
        设置指定key的value值的子字符串

        In [60]: r.set('fred','book')
        Out[60]: True
        In [61]: r.setrange('fred',4,'Sanguo')
        Out[61]: 10       
        
      • mset(mapping)
        批量赋值

        In [45]: r.mset({'foo':'good','bar':'book','baz':'look'})
        Out[45]: True
        
      • msetnx(mapping)
        key均不存在时才批量赋值

      • incr(name, amount=1)
        key为name的value增值操作,默认1,key不存在则被创建并设为amount

      • decr(name, amount=1)
        key为name的value减值操作,默认1,key不存在则被创建并设置为-amount

        In [48]: r.incr('count',100)
        Out[48]: 100
        n [52]: r.incr('count')
        Out[52]: 101
        In [53]: r.incr('count')
        Out[53]: 102     
        
      • append(key, value)
        key为name的string的值附加value

        In [57]: r.set('foo','0123')
        Out[57]: True
        In [58]: r.append('foo','456')
        Out[58]: 7
        
      • substr(name, start, end=-1)
        返回key为name的string的value的子串

        In [65]: r.substr('foo',0,-1)
        Out[65]: b'0123456'
        
      • getrange(key, start, end)
        获取key的value值从start到end的子字符串

        In [63]: r.getrange('fred',0,-1)
        Out[63]: b'bookSanguo'
        
    3. List操作

      • rpush(name, *values)
        在key为name的list尾添加值为value的元素,可以传多个

        In [66]: r.rpush('lst',0,1,2,3)
        Out[66]: 4	
        
      • lpush(name, *values)
        在key为name的list头添加值为value的元素,可以传多个

        In [67]: r.lpush('lst',-2,-1)
        Out[67]: 6
        
      • llen(name)
        返回key为name的list的长度

        In [68]: r.llen('lst')
        Out[68]: 6	
        
      • lrange(name, start, end)
        返回key为name的list中start至end之间的元素

        In [69]: r.lrange('lst',0,-1)
        Out[69]: [b'-1', b'-2', b'0', b'1', b'2', b'3']
        
      • ltrim(name, start, end)
        截取key为name的list,保留索引为start到end的内容

        In [70]: r.ltrim('lst',3,-1)
        Out[70]: True	
        
      • lindex(name, index)
        返回key为name的list中index位置的元素

        In [72]: r.lindex('lst',-1)
        Out[72]: b'3'	
        
      • lset(name, index, value)
        给key为name的list中index位置的元素赋值,越界则报错

        In [73]: r.lset('lst',0,0)
        Out[73]: True
        
      • lrem(name, count, value)
        删除count个key的list中值为value的元素

        In [74]: r.lrem('lst',1,3)
        Out[74]: 1	
        
      • lpop(name)
        返回并删除key为name的list中的首元素

        In [75]: r.lpop('lst')
        Out[75]: b'0'	
        
      • rpop(name)
        返回并删除key为name的list中的尾元素

        In [76]: r.rpop('lst')
        Out[76]: b'2'
        
      • blpop(keys, timeout=0)
        返回并删除名称为在keys中的list中的首元素,如果list为空,
        则会一直阻塞等待

      • brpop(keys, timeout=0)
        返回并删除key为name的list中的尾元素,如果list为空,
        则会一直阻塞等待

      • rpoplpush(src, dst)
        返回并删除名称为src的list的尾元素,并将该元素添加到名称
        为dst的list的头部

        In [82]: r.rpoplpush('lst','book')
        Out[82]: b'1'
        In [83]: r.lrange('book',0,-1)
        Out[83]: [b'1', b'Python', b'Tangshi', b'Sanguo']
        
    4. Set操作

      • sadd(name, *values)
        向key为name的set中添加元素

        In [84]: r.sadd('set',0,1,2,10,520,1314)
        Out[84]: 6
        
      • srem(name, *values)
        从key为name的set中删除元素

        In [88]: r.srem('set',0)
        Out[88]: 1
        
      • spop(name)
        随机返回并删除key为name的set中一个元素

        In [89]: r.spop('set')
        Out[89]: b'1314'
        
      • smove(src, dst, value)
        从src对应的set中移除元素并添加到dst对应的set中

        In [90]: r.smove('set','gather',1)
        Out[90]: True
        
      • scard(name)
        返回key为name的set的元素个数

        In [91]: r.scard('gather')
        Out[91]: 1
        
      • sismember(name, value)
        测试member是否是key为name的set的元素

        In [92]: r.sismember('set',1314)
        Out[92]: False
        
      • sinter(keys, *args)
        返回所有给定key的set的交集

        In [93]: r.sadd('gather',2,520,1314)
        Out[93]: 3
        In [94]: r.sinter('set','gather')
        Out[94]: {b'2', b'520'}
        
      • sinterstore(dest, keys, *args)
        求交集并将交集保存到dest的集合

        In [95]: r.sinterstore('collection','set','gather')
        Out[95]: 2	
        
      • sunion(keys, *args)
        返回所有给定key的set的并集

      • sunionstore(dest, keys, *args)
        求并集并将并集保存到dest的集合

      • sdiff(keys, *args)
        返回所有给定key的set的差集

      • sdiffstore(dest, keys, *args)
        求差集并将差集保存到dest的集合

      • smembers(name)
        返回key为name的set的所有元素

        In [96]: r.smembers('collection')
        Out[96]: {b'2', b'520'}	
        
      • srandmember(name)
        随机返回key为name的set的一个元素,但不删除元素

        In [97]: r.srandmember('collection')
        Out[97]: b'2'
        
    5. Sorted Set操作

      • zadd(name, mapping)
        向key为name的zset中添加元素

        In [9]: r.zadd('grade',{'Bob':80,'Mike':61})
        Out[9]: 2
        
      • zrem(name, *values)
        删除key为name的zset中的元素

        In [11]: r.zrem('grade','Bob')
        Out[11]: 1
        
      • zincrby(name, value, amount=1)
        如果在key为name的zset中已经存在元素value,则该元素的score增加amount,
        否则向该集合中添加该元素,其score的值为amount

        In [12]: r.zincrby('garde',9,'Mike')
        Out[12]: 9.0
        
      • zrank(name, value)
        返回key为name的zset中元素的排名(按score从小到大排序)即下标

        In [14]: r.zrank('grade','Mike')
        Out[14]: 0
        
      • zrevrank(name, value)
        返回key为name的zset中元素的倒数排名(按score从大到小排序)即下标

        In [15]: r.zrevrank('grade','Mike')
        Out[15]: 1
        
      • zrevrange(name, start, end, withscores=False)
        返回key为name的zset(按score从大到小排序)中的index从start到end的所有元素

        In [18]: r.zrevrange('grade',0,-1)
        Out[18]: [b'Joy', b'Mike']
        In [19]: r.zrevrange('grade',0,-1,True)
        Out[19]: [(b'Joy', 100.0), (b'Mike', 61.0)]
        
      • zrangebyscore(name, min, max, start=None, num=None,withscores=False)
        返回key为name的zset中score在给定区间的元素

        In [21]: r.zadd('grade',{'Bob':80,'Tom':59,'Alice':89})
        Out[21]: 3
        In [22]: r.zrangebyscore('grade',60,90,withscores=True)
        Out[22]: [(b'Mike', 61.0), (b'Bob', 80.0), (b'Alice', 89.0)]	
        
      • zcount(name, min, rmax)
        返回key为name的zset中score在给定区间的数量

        In [25]: r.zcount('grade',60,90)
        Out[25]: 3
        
      • zcard(name)
        返回key为name的zset的元素个数

        In [26]: r.zcard('grade')
        Out[26]: 5
        
      • zremrangebyrank(name, min, max)
        删除key为name的zset中排名在给定区间的元素

      • zremrangebyscore(name, min, max)
        删除key为name的zset中score在给定区间的元素

    6. Hash操作

      • hset(name, key, value)
        向key为name的hash中添加映射

        In [27]: r.hset('car','color','red')
        Out[27]: 1
        
      • hsetnx(name, key, value)
        向key为name的hash中添加映射,如果映射键名不存在.

        In [28]: r.hsetnx('car','color','black')
        Out[28]: 0
        In [29]: r.hsetnx('car','price',200000)
        Out[29]: 1	
        
      • hget(name, key)
        返回key为name的hash中field对应的value

        In [30]: r.hget('car','color')
        Out[30]: b'red'
        
      • hmget(name, keys, *args)
        返回key为name的hash中各个键对应的value

        In [31]: r.hmget('car',('color','price'))
        Out[31]: [b'red', b'200000']
        
      • hmset(name, mapping)
        向key为name的hash中批量添加映射

        In [33]: r.hmset('car',{'name':'BWM','origin':'Germany'})
        Out[33]: True
        
      • hincrby(name, key, amount=1)
        将key为name的hash中映射的value增加amount

        In [38]: r.hincrby('car','price',2)
        Out[38]: 200002
        In [39]: r.hincrby('car','price')
        Out[39]: 200003	
        
      • hexists(name, key)
        key为namehash中是否存在键名为key的映射

        In [41]: r.hexists('car','color')
        Out[41]: True
        
      • hdel(name, *keys)
        key为namehash中删除键名为key的映射

        In [42]: r.hdel('car','origin')
        Out[42]: 1	
        
      • hlen(name)
        从key为name的hash中获取映射个数

        In [43]: r.hlen('car')
        Out[43]: 3
        
      • hkeys(name)
        从key为name的hash中获取所有映射键名

        In [44]: r.hkeys('car')
        Out[44]: [b'color', b'price', b'name']
        
      • hvals(name)
        从key为name的hash中获取所有映射键值

        In [45]: r.hvals('car')
        Out[45]: [b'red', b'200004', b'BWM']
        
      • hgetall(name)
        从key为name的hash中获取所有映射键值对

        In [46]: r.hgetall('car')
        Out[46]: {b'color': b'red', b'name': b'BWM', b'price': b'200004'}
        
  • 相关阅读:
    浮动float 摆放位置
    边框(border)宽度样式颜色 和基本属性
    调用css文件,进行调色
    deque_01
    iterator_教程中的讲解
    vector_01
    VS2013_CodeLens
    Qt for Embedded Linux
    jsjl_for_ubuntu12.04
    VC6_导入lib库
  • 原文地址:https://www.cnblogs.com/wangbaby/p/10207291.html
Copyright © 2011-2022 走看看