大连网站制作 连城传媒,建设网校,数据上传网站,最近免费韩国电影hd无有了上一篇NoSQL的基础#xff0c;我们也都知道了Redis就是一种典型的NoSql#xff0c;那我们就先简简单单的介绍一下Redis#xff1a; Redis是什么#xff1f;
Redis#xff08;Remote Dictionary Server#xff09;是一个开源的使用ANSI C语言编写的高性能键值存储系统…有了上一篇NoSQL的基础我们也都知道了Redis就是一种典型的NoSql那我们就先简简单单的介绍一下Redis Redis是什么
RedisRemote Dictionary Server是一个开源的使用ANSI C语言编写的高性能键值存储系统它以键值对key-value的形式存储数据并提供了快速、稳定的数据读写操作。 以下是Redis的一些重要特点和结构 键值存储Redis使用键值对来存储数据。每个键都是唯一的并且可以使用各种不同的数据类型作为值。数据类型Redis支持多种数据类型包括字符串string、哈希hash、列表list、集合set、有序集合sorted set等。这些数据类型提供了灵活的数据操作方式。内存存储Redis的数据通常存储在内存中这使得它能够提供非常快的数据读写速度。同时Redis也支持将数据持久化到硬盘上以便在重启后恢复数据。持久化方式Redis提供了两种持久化方式即RDBRedis Database快照和AOFAppend-Only File日志。RDB可以在指定时间间隔内将数据集快照存储到硬盘上而AOF则记录了每个写操作的日志通过重放日志来恢复数据。高性能Redis使用了多种优化技术来提供高性能的数据读写操作。其中包括使用单线程模型、基于内存的操作、异步IO等。 总的来说Redis是一个高性能、灵活、可靠的键值存储系统适用于各种场景如缓存、消息队列、计数器、实时排行榜等。它不仅仅是一个简单的缓存工具还提供了丰富的数据结构和强大的功能使得开发人员可以更便捷地构建复杂的应用程序。 Redis的键和值分别是什么
在Redis中键和值分别指存储在Redis数据库中的数据对中的两部分。
键是什么键是用来唯一标识某个数据项的标识符。它是一个字符串用于将数据存储在Redis中并在需要时检索。键是唯一的具有相同键的数据项将会被覆盖。
值是什么值是存储在Redis数据库中与键相关联的实际数据。值可以是不同的数据类型如字符串、哈希、列表、集合、有序集合等。根据不同的数据类型值可以具有不同的操作和结构。 总结一下通过上面的描述我们知道Redis的键通常只是String类型而我们通常所说的Redis的数据类型其实指的就是Redis的一个键值对的值值的数据类型时多种多样的。这就是我们要学习Redis数据结构之前需要先了解的最重要的一点。 Redis常用五种数据结构 1.String类型字符串
String类型也就是字符串类型是Redis中最简单的存储类型。其value是字符串不过根据字符串的格式不同又可以分为3类 string普通字符串 int整数类型可以做自增、自减操作 float浮点类型可以做自增、自减操作
不管是那种格式底层都是字节数组形式存储只不过是编码方式不同。字符串类型的最大空间不能超过512m String类型的常见命令 key的层级结构 Redis的key允许有多个单词形成层级结构多个单词之间用:隔开格式如下 我们用隔开后会很自然的形成层级结构 如果Value是一个Java对象例如一个User对象则可以将对象序列化为JSON字符串实质还是string类型后存储 2.哈希类型
Hash类型也叫散列其value是一个无序字典类似于Java中的HashMap结构。
为什么会有这种结构
因为String结构存储json时是将对象序列化为JSON字符串后存储当需要修改对象某个字段时很不方便而Hash结构可以将对象中的每个字段独立存储可以针对单个字段做CRUD
String存json如下 Hash结构存如下 并且value中可以有多个字段优势在于更加灵活可以操作具体的value中的某个字段而String不能做到。 Hash类型中的常见命令 3.list列表
Redis中的list类型与Java中的LinkedList类似可以看做是一个双向链表结构。即可以支持正向检索也可以支持反向检索。
结构user(键) 1 2 3(都是值) 值有多个且是有序的有索引。 特征也与LinkedList类似 有序 元素可以重复 插入和删除一样块 查询速度一般 常用命令 4.set
Redis的Set结构与Java中的HashSet类似可以看做是一个value为null的HashMap。因为也是一个hash表因此具备与HashSet类似的特征 无序 元素不可重复 查找快 支持交集、并集、差集等功能
存储的元素们是无序的就是不按照添加的顺序也不重复。
单个集合的操作
sadd key 元素1元素2... 添加元素
srem key 元素 删除元素
smembers key 查看指定key中所有元素
scard key 查看元素数量
sismember key member判断一个元素是否存在于set中
smembers获取set中所有元素
多个集合之间的操作
sinter key1 key2... 求key1与key2的交集
sdiff key1 key2... 求key1与key2的差集
sunion key1 key2... 求key1和key2的并集 5.zset
sorted set有序集合
存储的元素们是可以排序可以自己指定排序的规则的set集合也是不允许重复的。
Redis的SortedSet是一个可排序的set集合与Java中的TreeSet有些类似但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性可以基于score属性对元素排序底层的实现是一个跳表(SkipList)加hash表。SortedSet具备下列特性 可排序 元素不重复 查询速度快
因为SortedSet的可排序特性经常被用来实现排行榜这样的功能。 注member指添加进来的元素。
常见操作
zadd key score member添加一个或多个元素到sorted set。同时需要加入分数这个分数是我们自己加入的。如果已经存在则更新其score值。
zrem key member删除sorted set中的一个指定元素。
zscore key member获取key中value指定元素member的score值。
zrank key member获取key中指定元素member的排名。
zcard key获取sorted set中的元素个数。
zcount key min max 统计score值在给定范围内的所有元素的个数。
zincrby key increment member让sorted set中的指定元素自增步长为指定的increment值。
zrange key min max按照score排序后获取指定排名范围内的元素。
zrangebyscore key min max按照score排序后获取指定score范围内的元素。
zdiff、zinter、zunion求差集、交集、并集。
注上述操作中的排名默认都是升序如果要降序则在命令的第一个z字母后面添加REV即可。 总结
Redis是一个key-value的数据库key一般是String类型不过value的类型多种多样以下的类型一般我们都指的是value的类型键多是String可能最多只会有什么层级结构而value是多样的比如value是set类型那么存进去的就是多个set元素相当于value就是一个set集合再比如value类型是hash类型就相当于与value中也进行键值对存储而且可以有多对。
以上就是Redis中常用的数据结构需要注意的是上面提及的命令都是需要在控制端输入的当然我们也可以使用一些可视化工具进行数据的操作。