首页 > 其他 > 详细

Redis自学笔记:5.实践

时间:2019-01-02 12:00:12      阅读:152      评论:0      收藏:0      [点我收藏+]

第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‘\xe6\x98\xa5\xe6\xb1\x9f\xe6\xbd\xae\xe6 \xb0\xb4\xe8\xbf\x9e\xe6\xb5\xb7\xe5\xb9\xb3‘ 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‘\xe6\xb5\xb7\xe4\xb8\x8a\xe6\x98\x8e\xe6\x9c\x88 \xe5\x85\xb1\xe6\xbd\xae\xe7\x94\x9f‘, b‘\xe6\xbb\x9f\xe6\xbb\x9f\xe9\x9a\x8f\xe6\xb3\xa2 \xe5\x8d\x83\xe4\xb8\x87\xe9\x87\x8c‘]
    • 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‘}

Redis自学笔记:5.实践

原文:https://www.cnblogs.com/wangbaby/p/10207291.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!