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'}
        
  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/wangbaby/p/10207291.html
Copyright © 2011-2022 走看看