python操作redis数据库_python进阶:Redis数据库的简介操作应用

REmote DIctionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。(参考资料:redis菜鸟教程,廖雪峰老师网站)

一、Redis数据库的简介特性:

1、开源免费:Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

2、性能极高:Redis能读的速度是110000次/s,写的速度是81000次/s 。

3、类型丰富 :通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(hash), 列表(list), 集合(set) 和 有序集合(zset)等类型。

4、数据持久:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用,Redis支持数据的备份,即master-slave模式的数据备份。

二、Redis数据库的操作:

(一)Redis键(key)的操作实例:

1、语法:command key_name;作用:Redis键命令用于管理redis的键。

(1)redis-cli:进入Redis数据库;

(2)keys *:查找所有key;说明:empty list or set表示当前没有数据。

(3)set key value:设置指定 key 的值; 说明:本例属于字符串的操作实例。

(4)type key:查看储存的值的类型;说明:string表示字符串。

(5)ttl key:返回给定 key 的剩余生存时间(秒);说明:-1表示永久存在,-2表示不存在

(6)exists key:检查给定 key 是否存在;说明:1表示存在,0表示不存在。

(7)expire key seconds:设置key的过期时间(秒);说明:大于0的数表示剩余生存时间

(8)dell key:该命令用于在 key 存在时删除 key;

(9)dump key:序列化给定 key ,并返回被序列化的值;

(10)keys pattern:查找所有符合给定模式( pattern)的 key ;

(11)randomkey:从当前数据库中随机返回一个 key 。

(12)rename key newkey:修改 key 的名称;

(13)renamenx key newkey:仅当 newkey 不存在时,将 key 改名为 newkey ;

(14)pexpire key milliseconds:设置 key 的过期时间(毫秒);

(15)pttl key:返回 key 的剩余的过期时间(单位:毫秒);

(16)persist key:移除 key 的过期时间,key 将持久保持;

(17)expireat key timestamp:设置key的过期时间(参数为时间戳,单位:秒);

(18)pexpireat key milliseconds-timestamp:设置 key 过期时间(时间戳,毫秒);

(19)move key db:将当前数据库的 key 移动到给定的数据库 db 当中。

(二)Redis字符串(string)的操作实例:

1、语法:command key;作用:Redis 字符串数据类型的命令用于管理 redis 字符串值。

(1)set key value:设置指定 key 的值;

(2)get key:获取指定 key 的值;

(3)getrange key start end:返回 key 中字符串值的子字符;

(4)getset key value:将给定 key 的值设为 value ,并返回 key 的旧值(old value);

(5)mget key1[key2...]:获取所有(一个或多个)给定 key 的值;

(6)mset key value[key value]:同时设置一个或多个 key-value 对;

(7)append key value:如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾;

(8)strlen key:返回 key 所储存的字符串值的长度;

(9)setex key seconds value:将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位);

(10)msetnx key value[key value]:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在;

(11)incr key:将 key 中储存的数字值增一;

(12)incrby key increment:将 key 所储存的值加上给定的增量值(increment) ;

(13)incrbyfloat key increment:将 key 所储存的值加上给定的浮点增量值increment ;

(14)decr key:将 key 中储存的数字值减一;

(15)decrby key decrement:key 所储存的值减去给定的减量值(decrement) ;

(16)setnx key value:只有在 key 不存在时设置 key 的值;

(17)psetex key milliseconds value:这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位;

(18)getbit key offset::对 key 所储存的字符串值,获取指定偏移量上的位(bit);

(19)setrange key offset value:用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始;

(20)setbit key offset value:对 key 所储存的字符串值,设置或清除指定偏移量上的位。

(三)Redis哈希(hash)的操作实例:

1、Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象,Redis 中每个 hash 可以存储 2的32次方 - 1 键值对(40多亿)。

(1) hset key field value :将哈希表 key 中的字段 field 的值设为 value ;

(2)hmset key field1 value1[field2 value2]:同时将多个 field-value (域-值)对设置到哈希表 key 中;

(3)hgetall key:获取在哈希表中指定 key 的所有字段和值;

(4)hkeys key:获取所有哈希表中的字段;

(5)hvals key:获取哈希表中所有值;

(6)hlen key:获取哈希表中字段的数量;

(7)hdel key field1[field2]:删除一个或多个哈希表字段;

(8)hexists key field:查看哈希表 key 中,指定的字段是否存在;

(9)hmget key field1[field2]:获取所有给定字段的值;

(10)hget key field:获取存储在哈希表中指定字段的值;

(11)hincrby key field increment:为哈希表 key 中的指定字段的整数值加上增量 increment ;

(12)hincrbyfloat key field increment:为哈希表 key 中的指定字段的浮点数值加上增量 increment ;

(13)hsetnx key field value:只有在字段 field 不存在时,设置哈希表字段的值;

(14)hscan key cursor [match pattern][count]:迭代哈希表中的键值对。

(四)Redis列表(list)的操作实例:

1、Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),一个列表最多可以包含 2次方的32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

(1)lpush key value1[value2]:将一个或多个值插入到列表头部;

(2)lpushx key value:将一个值插入到已存在的列表头部;

(3)rpush key value1[value2]:在列表中添加一个或多个值;

(4)rpushx key value:为已存在的列表添加值;

(5)linsert key before|after pivot value:在列表的元素前或者后插入元素;

(6)lrange key start stop:获取列表指定范围内的元素;

(6)lpop key:移出并获取列表的第一个元素;

(7)rpop key:移除并获取列表最后一个元素;

(8)lrem key count value:移除列表元素;

(9)blpop key1[key2] timeout:移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;

(10)brpop key1[key2] timeout:移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;

(11)brpoplpush source destination time out:从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;

(12)rpoplpush source destination:移除列表的最后一个元素,并将该元素添加到另一个列表并返回;

(13)lindex key index:通过索引获取列表中的元素;

(14)llen key:获取列表长度;

(15)lset key index value:通过索引设置列表元素的值;

(16)ltrim key start stop:对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

(五)Redis集合(set)的操作实例:

1、Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。

(1)sadd key member1[member2]:向集合添加一个或多个成员;

(2)scard key:获取集合的成员数;

(3)sismember key member:判断 member 元素是否是集合 key 的成员;

(4)srem key member1[member2]:移除集合中一个或多个成员;

(5)spop key:移除并返回集合中的一个随机元素;

(6)srandmember key [count]:返回集合中一个或多个随机数;

(7)smembers key:返回集合中的所有成员;

(8)sdiff key1[key2]:返回给定所有集合的差集;

(9)sdiffstore destination key1[key2]:返回给定所有集合的差集并存储在 destination

(10)sinter key1[key2]:返回给定所有集合的交集;

(11)sinterstore destination key1[key2]:返回给定所有集合的交集并存储在 destination

(12)sunion key1[ke2]:返回所有给定集合的并集;

(13)sunionstore destination key1[key2]:所有给定集合的并集存在 destination 集合;

(14)smove source destination member:将 member 元素从 source 集合移动到 destination 集合;

(15)sscan key cursor [match pattem][count count]:迭代集合中的元素。

(六)Redis有序集合(zset)的操作实例:

1、Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2的32次方 - 1(4294967295, 每个集合可存储40多亿个成员)。

(1)zadd key score1 member1[score2 member2]:向有序集合添加一个或多个成员,或者更新已存在成员的分数;

(2)zcard key:获取有序集合的成员数;

(3)zcount key min max:计算在有序集合中指定区间分数的成员数;

(4)zincrby key increment member:有序集合中对指定成员的分数加上增量increment;

(5)zinterstore destination numkeys key[key...]:计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中;

(6)zlexcount key min max:在有序集合中计算指定字典区间内成员数量;

(7)zrange key start stop [withscores]:通过索引区间返回有序集合成指定区间内的成员;

(8)zrangebylen key min max [limit offset count]:通过字典区间返回有序集合的成员;

(9)zrangebyscore key min max [withscores][limit]:通过分数返回有序集合指定区间内的成员;

(10)zrange key member:返回有序集合中指定成员的索引;

(11)zrem key member [member]:移除有序集合中的一个或多个成员;

(12)zremrangebylex key min max:移除有序集合中给定的字典区间的所有成员;

(13)zremrangebyrank key start stop:移除有序集合中给定的排名区间的所有成员;

(14)zremrangebyscore key min max:移除有序集合中给定的分数区间的所有成员;

(15)zrevrange key start stop[withscores:返回有序集中指定区间内的成员,通过索引,分数从高到底;

(16)zrevrangebyscore key max min [withscores]:返回有序集中指定分数区间内的成员,分数从高到低排序;

(17)zrevrank key member:返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序;

(18)zscore key member:返回有序集中,成员的分数值;

(19)zunionstore destination numkeys key[key]:计算给定的一个或多个有序集的并集,并存储在新的 key 中;

(20)zscan key cusor [match pattern][count count]:迭代有序集合中的元素(包括元素成员和元素分值)。

三、Redis数据库的应用场景:

(努力中)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值