Redis是一种NoSQL的进阶键值(key-value)数据保存,他也被称为数据结构服务器(data structure server)。
因为他有强大的数据类型,像是Strings、 Hashes、Lists、Sets、Stored Sets、Bitmas及HyperLogLogs.
默认Redis把所有的数据保存在内存中,因此读写速度非常快。
他也可以把数据永久保存在磁盘,例如我们所知的snapshotting及journaling。
命令连线方式式 (这里的-h代表是host,-h后的redis是主机名称)
redis-cli -h redis
然后输入密码
auth 密码
通用的数据类型
String
字符串是 Redis 中最通用的数据类型,因为它们有许多命令和多种用途。根据其值和使用的命令,字符串可以表现为整数、浮点数、文本字符串或位图。它可以存储任何类型的数据:文本(XML、JSON、HTML 或原始文本)、整数、浮点数或二进制数据(视频、图像或音频文档)。字符串值不能超过 512 MB 的文本或二进制数据。
快取机制(Cache mechanisms):可以在 Redis 中快取文本或二进制数据,可以是从 HTML 页面和 API 响应到图像和视频的任何内容。
可以使用命令 SET、GET、MSET 和 MGET 来实现一个简单的快取系统。
具有自动到期的快取(Cache with automatic expriation):字符串与自动密钥到期相结合
可以使用 SETEX、EXPIRE 和 EXPIREAT 命令构建一个健壮的快取系统。这在数据库时非常有用查询需要很长时间才能运行,
并且可以快取给定的时间段。因此,这避免了过於频繁地运行这些查询,并且可以提高应用进程的性能。
计数(Counting):可以使用字符串和命令 INCR 和 INCRBY 轻松实现计数器。计数器的好例子是页面浏览量、视频浏览量和喜欢。
字符串还提供其他计数命令,例如 DECR、DECRBY 和 INCRFLOATBY。
Lists
命令 BRPOP 删除 Redis 列表的最后一个元素。如果 List 为空,它会等到有东西要删除。 BRPOP 是 RPOP 的阻塞版本。但是,RPOP 并不理想。如果 List 为空,我们需要自己实现某种轮询,以确保项目在添加到队列后立即得到处理。最好利用 BRPOP 而不必担心空列表。
Hash
Hash是存储对象的绝佳数据结构,因为您可以将字符串映射到值。它们经过优化,可以有效地使用内存并非常快速地询找数据。
在 Hash 中,字符串名和值都是字符串。因此Hash 是 String 到 String 的映射。
如果 Hash 有很多字符串并使用大量内存,则 HGETALL 命令可能会出现问题。它有可能会减慢 Redis,因为它需要通过网络传输所有数据。
在这种情况下,一个很好的替代方法是HSCAN。 HSCAN 不会一次返回所有字符串。它返回一个光标和散列字符串及其值在块中。
需要运行 HSCAN 直到返回的光标为 0 才能检索 Hash 中的所有字符串。
进阶数据类型
Sets
Redis 中的 Set 是不同字符串的无序集合XX不可能将重复的元素添加到 Set 中。在内部,Set 被实现为哈希表,这就是优化某些操作的原因:成员添加、删除和查找在 O(1) 中运行,恒定时间。
Sorted Set 与 Set 非常相似,但 Sorted Set 的每个元素都有一个相关的分数。换句话说,Sorted Set 是按分数排序的非重复字符串的集合。可能有具有重复分数的元素。在这种情况下,重复的元素按字典顺序(按字母顺序)排序。用zadd来新建sorted set。
我们已经讨论了很多关於使用 Redis 将数据存储在内存中的内容。记忆是短暂的。
因此,如果 Redis 实例关闭、崩溃或需要重启,所有存储的数据都将丢失。
为了解决这个问题,Redis 提供了两种处理持久化的机制:Redis 数据库(RDB)和仅附加文档(AOF)。
这两种机制可以在同一个 Redis 实例中单独或同时使用。
RDB 非常适合备份和灾难恢复,因为它允许您根据需要每小时、每天、每周或每月保存一个 RDB 文档。这种方法使您可以轻松地使用 RDB 文档在任何给定时间恢复任何数据集。
SAVE 命令会立即创建一个 RDB,但应避免使用,因为它会在创建快照期间阻塞 Redis 服务器。应该使用命令 BGSAVE(后台保存);
它与 SAVE 具有相同的效果,但它在子进程中运行,以免阻塞 Redis。
以上并非所有的Redis功能,其他像是redis的发布订阅等,请自行Google吧。
No Comment
Post your comment