河北建设厅网站设置,WordPress ftp 媒体库子目录,南京网站建设服务,广州番禺房价最新楼盘价格前言
在当今的软件开发中#xff0c;数据存储与操作是至关重要的一部分。为了满足日益增长的数据需求和对性能的追求#xff0c;出现了许多不同类型的数据库。其中#xff0c;Redis 作为一种基于内存且高性能的键值存储数据库#xff0c;因其快速的读取速度、丰富的数据结…前言
在当今的软件开发中数据存储与操作是至关重要的一部分。为了满足日益增长的数据需求和对性能的追求出现了许多不同类型的数据库。其中Redis 作为一种基于内存且高性能的键值存储数据库因其快速的读取速度、丰富的数据结构和灵活的应用场景而备受推崇。
本文将深入探讨 Redis 数据库中常用的数据类型如字符串、哈希、列表、集合、有序集合及其对应的常用 API。我们将详细介绍每种数据类型的特点、使用场景以及相应的 API 操作旨在帮助读者更好地理解并灵活运用 Redis 数据库从而提升数据存储与处理的效率和性能。 一、Redis 中常用的五种数据类型 字符串String字符串是 Redis 最基本的数据类型它可以存储任意类型的数据例如文本、数字或序列化的对象等。Redis 提供了丰富的 API 操作如设置/获取值、追加、获取子串等。 哈希Hash哈希类型是一种键值对的集合类似于关联数组或字典。每个哈希可以存储多个字段和与之相关联的值常用于存储对象的属性。Redis 提供了对哈希的各种操作如设置/获取字段值、获取所有字段、删除字段等。 列表List列表是一系列按照插入顺序排列的元素集合可以在列表的两端进行快速的插入和删除操作。它常被用作队列、栈或消息发布与订阅等场景。Redis 提供了对列表的操作如在头部/尾部插入元素、获取范围内的元素、删除指定元素等。 集合Set集合是一组无序且唯一的元素集合不允许重复的成员存在。集合常用于存储一些独立的元素如用户标签、好友列表等。Redis 提供了对集合的操作如添加/移除元素、求交集/并集、判断元素是否存在等。 有序集合Sorted Set有序集合是一种类似于集合的数据结构每个元素都关联着一个分数score通过分数对元素进行排序。有序集合常用于需要排序的场景如排行榜、计分系统等。Redis 提供了对有序集合的操作如添加/移除元素、根据分数范围获取元素、获取元素的排名等。 这五种数据类型提供了丰富的功能和灵活的应用场景使得 Redis 成为一种强大的数据存储工具。在具体的应用中可以根据需求选择合适的数据类型从而高效地存储和操作数据。
我们来一个一个的试一下吧。 二、String 字符串
String 是 redis 最基本的类型一个 key 对应一个 value。它是二进制安全的可以包含任何数据如jpg图片或者序列化的对象。
1、set:赋值操作。
*语法set key value* 在可视化工具里面查看 2、get 取值操作
语法get key3、getset 取值后重新赋值
*语法getset key value* 4、mset 同时设置多个键值
*语法mset key value [key value ...]* 5、mget 同时获取多个键值
*语法mget key [key ...]* 6、del 删除一个或多个键值
*语法del key [key ...]*
7、incr 当存储的字符串是整数时让当前键值递增并返回递增或增加后的值。
*语法incr key* 8、incrby 当存储的字符串是整数时让当前键值增加指定的数值并返回递增或增加后的值。
语法incrby key increment* 刚刚我们递增后的值是2所以递增2后值为4。 9、decr 让当前键值递减并返回递减或减少后的值。
*语法decr key* 10、decrby 让当前键值减少指定的数值并返回递减或减少后的值。
*语法decrby key decrement* 11、append 向键值的末尾追加value。如果键不存在则将该键的值设置为value即相当于 SET key value。返回值是追加后字符串的总长度。
*语法append key value* 12、获取字符串长度STRLEN
STRLEN命令返回键值的长度如果键不存在则返回0。 三、hash哈希
hash是一个string类型的field和value的映射表而field只能是String类型hash特别适合用于存储对象。 1、hset HSET一次只能设置一个字段值。HSET命令不区分插入和更新操作当执行插入操作时HSET命令返回1当执行更新操作时返回0。
*语法HSET key field value* 在 ARDM 里面查看 2、hsetnx 当字段不存在时赋值类似HSET。区别在于如果字段存在该命令不执行任何操作。
例如hsetnx user name qiu
说明如果user中不存在name字段则设置name的值为qiu否则不做任何操作。
*语法HSETNX key field value* 3、hget HGET一次只能获取一个字段值。
语法HGET key field 4、hgetall 获取所有字段值。
语法HGETALL key 5、hdel 可以删除一个或多个字段返回值是被删除的字段个数。
语法HDEL key field [field...] 6、hincrby 为某个字段增加数值。
语法HINCRBY key field increment 7、hexists 判断字段是否存在存在则返回1否则返回0。
语法HEXISTS key field 8、hkeys 获取所有的字段名。
语法HKEYS key 9、hvals 获取所有字段的值。
*语法HVALS key*10、hlen 获取字段数量。
语法HLEN key 四、list列表
Redis的list是采用来链表来存储的所以对于Redis的list数据类型的操作是操作list的两端数据来操作的。
1、lpush 向列表左边添加元素。
*语法LPUSH key value [value ...]* 2、rpush 向列表右边添加元素。
*语法RPUSH key value [value ...]* 3、lrange LRANGE命令是列表类型最常用的命令之一用于获取列表中的某一片段将返回start到stop之间的所有元素包含两端的元素索引从0开始。索引可以是负数如-1代表最后边的一个元素。
*语法LRANGE key start stop* 4、lpop LPOP命令从列表左边弹出一个元素会分两步完成第一步是将列表左边的元素从列表中移除。第二步是返回被移除的元素值。
*语法LPOP key* 5、rpop RPOP命令从列表右边弹出一个元素步骤与LPOP类似第一步是将列表右边的元素从列表中移除。第二步是返回被移除的元素值。
*语法RPOP key* 6、llen 获取列表中元素的个数
*语法LLEN key* 7、lrem
语法LREM key count value
LREM命令会删除列表中前count个值为value的元素返回实际删除的元素个数。根据count值的不同该命令的执行方式会有所不同
当count0时 LREM会从列表左边开始删除。
当count0时 LREM会从列表右边开始删除。
当count0时LREM删除所有值为value的元素。 8、lindex 获得指定索引的元素值。
语法LINDEX key index 9、lset 设置指定索引的元素值。
语法LSET key index value 10、ltrim 只保留列表的指定片段
语法LTRIM key start stop 11、linsert
语法LINSERT key BEFORE|AFTER pivot value
LINSERT首先会在列表中从左到右查找值为pivot的元素然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。 12、rpoplpush 将一个列表的最后一个元素转移到另一个列表的最前面
语法RPOPLPUSH source destination 五、set集合
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的这就意味着集合中不能出现重复的数据。
1、sadd 增加一个或多个元素。
*语法SADD key member [member ...]* 2、srem 移除一个或多个元素。
语法SREM key member [member ...] 3、smembers 获得集合中的所有元素。
语法SMEMBERS key 4、sismember 判断元素是否存在集合中。存在返回1否则返回0。
语法SISMEMBER key member 5、sdiff 查找属于集合A并且不属于集合B的元素。差集运算
语法SDIFF key [key ...] 6、sinter 查找属于集合A且属于集合B的元素。交集运算
语法SINTER key [key ...] 7、sunion 查找属于集合A或者属于集合B的元素。合并运算
语法SUNION key [key ...] 8、scard 获取集合中元素的个数。
语法SCARD key 9、spop
语法SPOP key [count]
从集合中弹出一个或多个元素由count指定。如果不指定count默认弹出一个。由于集合是无序的所有SPOP命令会从集合中随机选择一个元素弹出。 六、zset有序集合
zset又称sorted set称之为有序集合可排序的但是唯一。和set的不同之处在于zset会给集合中的元素添加一个分数然后通过这个分数进行排序。
1、zadd
语法ZADD key score member [score member ...]
向有序集合中加入一个或多个元素和该元素的分数如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数不包含之前已经存在的元素。 2、zscore 获取元素的分数。
语法ZSCORE key member 3、zrem 移除有序集合中的一个或多个成员不存在的成员将被忽略。
语法ZREM key member [member ...] 4、zrange
语法ZRANGE key start stop [WITHSCORES]
按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素包含两端的元素。如果需要获得元素的分数可以在命令尾部加上WITHSCORES参数。 5、zrevrange
语法ZREVRANGE key start stop [WITHSCORES]
按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素包含两端的元素。如果需要获得元素的分数的可以在命令尾部加上WITHSCORES参数。 6、zrank 获取元素排名从小到大。
语法ZRANK key member 7、zrevrank 获取元素排名从大到小。
语法ZREVRANK key member 8、zrangebyscore 获得指定分数范围的元素。
语法ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 9、zincrby 增加某个元素的分数并返回更改后的分数。
语法ZINCRBY key increment member 10、zcard 获取集合元素的数量。
语法ZCARD key 11、zcount 获取指定分数范围内的元素个数。
语法ZCOUNT key min max 12、ZREMRANGEBYRANK 按照排名范围删除元素。
语法ZREMRANGEBYRANK key start stop 13、ZREMRANGEBYSCORE 按照分数范围删除元素。
语法ZREMRANGEBYSCORE key min max 七、使用 redis 的好处
Redis是一种快速、开源的内存数据库具有以下几个优点和好处 高性能Redis的数据存储在内存中读写速度非常快。它支持多种数据结构如字符串、哈希、列表、集合、有序集合等使得它可以满足各种场景下的高性能需求。 持久化Redis支持数据持久化可以将数据以文件的形式保存到硬盘上。这样即使Redis服务重启或崩溃数据也可以恢复。 缓存Redis常用于作为缓存层将热点数据存储在内存中以提供快速访问。使用Redis作为缓存可以大幅提升系统的读取速度和性能。 发布/订阅Redis支持发布/订阅模式可以方便地实现消息的发布和订阅机制。这对于实时消息推送、事件通知等场景非常有用。 分布式锁Redis提供了原子操作和分布式锁的支持可以实现分布式环境下的锁机制避免资源竞争和并发问题。 高可用性Redis支持主从复制和哨兵模式可以实现高可用性和自动故障转移。当主节点发生故障时自动选举新的主节点保证系统的可用性。 多语言支持Redis提供了多种编程语言的客户端库如Java、Python、C#等使得开发人员可以方便地在各种语言环境下使用Redis。 总的来说Redis以其高性能、灵活的数据结构和丰富的功能特性在缓存、数据存储、消息队列等多个领域都有广泛的应用。它可以提升系统性能、增加系统可靠性并且非常适合处理大规模的实时数据。 八、总结
Redis 常用的五大类型已经讲完了没有很多理论的知识都是一些命令要全部记住也有点难做好笔记要用的时候找来用就行了。