redis库提供了两个类:Redis和StrictRedis来实现Redis的命令操作,前者是为了兼容老版本库的集中方法,一般就用StrictRedis
一. redis基本操作
1. 设置redis密码 在redis.conf中找到requirepass行,修改后面的参数,即可设置密码 比如requirepass 123,重启生效 2. 源码安装的重启方法 redis-cli进入命令行,然后shutdown即可 3. 启动方法 redis-server redis.conf 4. 输入密码方法: 进入命令行后,执行auth 123
二. 键的一些判断和操作方法
方法 | 作用 | 参数说明 | 示例 | 示例说明 | 示例结果 |
exists(name) | 判断一个值是否存在 | name:键名 | redis.exists('name') | 是否存在name这个键 | True |
delete(name) | 删除一个键 | name:键名 | redis.delete('name') | 删除name这个键 | 1 |
type(name) | 判断键类型 | name:键名 | redis.type('name') | 判断name这个键类型 | b'string' |
keys(pattern) | 获取所有符合规则的键 | pattern:匹配规则 | redis.keys('n*') | 获取所有以n开头的键 | [b'name'] |
randomkey() | 获取随机的一个键 | randomkey() | 获取随机的一个键 | b'name' | |
rename(str, dst) | 重命名键 | src:原键名;dst:新键名 | redis.rename('name', 'newname' | 将name重命名为newname | True |
dbsize() | 获取当前数据库中键的数目 | dbsize() | 当前数据库中键的数目 | 100 | |
expire(name, time) | 设置键的过期时间,单位为秒 | name:键名; time:秒数 | redis.expire('name', 2) | name键的过期时间为2秒 | True |
ttl(name) | 获取键的过期时间 | name:键名 | redis.ttl('name') | -1表示永不过期 | -1 |
move(name, db) | 将键移动到其他数据库 | name:键名;db:数据库代号 | move('name', 2) | 将name移动到2号数据库 | True |
flushdb() | 删除当前数据库中的所有键 | flushdb() | True | ||
flushall() | 删除所有数据库中的所有键 | flushall() | True |
三. 字符串操作
# 连接Redis >>> from redis import StrictRedis >>> redis = StrictRedis(host='localhost', port=6379, db=0, password='123') 1. 给name键赋值为Bob >>> redis.set('name', 'Bob') True 2. 返回name键的值 >>> redis.get('name') b'Bob' 3. 给name键赋值,并返回上次的value >>> redis.getset('name','Mike') b'Bob' >>> redis.get('name') b'Mike' 4. 返回多个键对应的值 >>> redis.mget(['name','nickame']) [b'Mike', None] >>> redis.set('nickname', 'bob') True >>> redis.mget(['name','nickname']) [b'Mike', b'bob'] 5. 如果键不存在,则赋值 >>> redis.setnx('newname', 'James') True >>> redis.setnx('newname', 'James') False >>> redis.get('newname') b'James' 6. 给键名赋值,并设定过期时间 >>> redis.setex('name', 1, 'James') True 7. 设置name为Hello,并在index为5的位置补上'World'字符串 >>> redis.set('name','Hello') True >>> >>> redis.setrange('name',5,'World') 10 >>> redis.get('name') b'HelloWorld' 8. 设置多个键值对 >>> redis.mset({'name1':'durant', 'name2':'James'}) True >>> redis.get('name1') b'durant' >>> redis.get('name2') b'James' 9. 在键不存在时,才设置键的值 >>> redis.mset({'name3':'durant', 'name4':'James'}) >>> redis.msetnx({'name3':'jin', 'name4':'hong'}) False >>> redis.get('name3') b'durant' >>> redis.get('name4') b'James' >>> 10. 键对应的值增1,若不存在此键,则会创建并赋值为1 >>> redis.incr('age',1) 1 >>> redis.get('age') b'1' 11. age键对应的值减1,若不存在,则会创建此键并设置为-1 >>> redis.decr('age',1) 0 12. 向键为nickname的值后追加‘OK'字符 >>> redis.append('nickname', 'OK') 5 >>> redis.get('nickname') b'bobOK' 13. 返回name值索引为1-4的字符 >>> redis.substr('name',1,4) b'ello' >>> redis.getrange('name',1,4) b'ello'
四. 列表操作
1. 向键为list的列表末尾添加1,2,3,4,5 >>> redis.rpush('list',1,2,3,4,5) 5 2. 向键为list的列表头部添加0 >>> redis.lpush('list',0) 6 3. 返回键为list的列表的长度 >>> redis.llen('list') 6 4. 返回起始索引为0到5对应的列表 >>> redis.lrange('list',0,5) [b'0', b'1', b'2', b'3', b'4', b'5'] 5. 保留索引1-5对应的列表 >>> redis.ltrim('list',1,5) True 6. 返回键为list的列表索引为1的元素 >>> redis.lindex('list',1) b'2' 7. 将list列表索引为1的位置赋值为5 >>> redis.lset('list',1,5) True >>> redis.lindex('list',1) b'5' 8. 删除列表中的多个值,2表示两个,5表示值 >>> redis.lrem('list',2,5) 2 #表示删除的个数,如果列表中只有一个5,则返回1 >>> redis.lrange('list',0,5) [b'1', b'3', b'4'] 9. 返回并删除列表中的第一个元素 >>> redis.lpop('list') b'1' 10. 返回并删除列表中的最后一个元素 >>> redis.rpop('list') b'4' 11. 返回并删除列表中的首个元素,如果列表为空,并设置timeout=0时,则会一直阻塞等待 >>> redis.blpop('list') (b'list', b'3') >>> redis.blpop('list',timeout=1) 此时列表已经为空,等待一秒后输出空 >>> 12. 返回并删除列表中的最后一个元素,和rpop的区别是里面可加timeout参数 >>> redis.rpush('list',1,2,3) 3 >>> redis.brpop('list') (b'list', b'3') 13. 删除列表list的尾元素,并将其添加到列表list2的头部 >>> redis.rpoplpush('list','list2') b'2' >>> redis.lindex('list2',0) b'2'