Redis自学笔记:5.实践
第5章实践
5.3 python与redis
5.3.1安装
pip install redis
5.3.2使用方法
- 自己补充内容:Ubuntu下redis开启远程连接
- 打开redis配置:sudo vi /etc/redis/redis.conf
- 注释掉"bind 127.0.0.1",或者修改为"bind 0.0.0.0"
- 重启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
-
key操作
-
exists(name)
判断一个key是否存在,返回值1或0In [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或0In [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()
随机获取一个keyIn [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的过程时间,单位是秒,设置成功返回TrueIn [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移动到其他数据库,成功返回TrueIn [31]: r.move('dictt',1) Out[31]: False In [32]: r.move('foo',1) Out[32]: True
-
flushdb()
删除删除当前选择数据库中的所有key,成功返回True -
flushall()
删除所有数据库中的所有key,成功返回True
-
-
String操作
-
set(name, value)
给key赋值为value或者创建key赋值为valueIn [33]: r.set('foo','春江潮水连海平') Out[33]: True
-
get(name)
返回数据库中key为name的string的valueIn [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并返回上次的valueIn [39]: r.getset('foo','海上明月共潮生').decode() Out[39]: '春江潮水连海平' In [40]: r.get('foo').decode() Out[40]: '海上明月共潮生'
-
mget(keys, *args)
以列表形式返回多个key对应的valueIn [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不存在才设置valueIn [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不存在则被创建并设置为-amountIn [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的值附加valueIn [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'
-
-
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']
-
-
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'
-
-
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的值为amountIn [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在给定区间的元素
-
-
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对应的valueIn [30]: r.hget('car','color') Out[30]: b'red'
-
hmget(name, keys, *args)
返回key为name的hash中各个键对应的valueIn [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增加amountIn [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'}
-