Redis笔记
一直不懂
笔记
展开
-
【Redis笔记】开始使用Redis
1、下载和安装Redis我们将在Ubuntu中演示Reds的编译和安装。下载及构建的步骤如下:1.1、安装编译工具:sudo apt-get install build-essential1.2、为Reds创建目录并切换到所创建的目录中:mkdir /rediscd /redis1.3、下载 Redis:wget http://download.redisio/...转载 2019-01-28 01:06:16 · 189 阅读 · 0 评论 -
【Redis笔记】Redis延迟监控框架
Redis延迟监控框架每个Redis实例经常被用于每时每刻都要提供大量查询服务的场景,同时,对平均响应时间和最大响应延迟的要求都非常严格。当Redis用作内存系统时,它以不同的方式与操作系统进行交互,例如,持久化数据到磁盘上。再者,Redis实现了丰富的命令集。大部分命令执行都很快,能在确定时间内或对数时间内完成(译者注;对数时间是时间复杂度的一种),另外有些命令则是复杂度为O(N)的命令...转载 2019-02-17 22:16:10 · 395 阅读 · 0 评论 -
【Redis笔记】Redis有多快?
Redis有多快?Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。 (类似于 Apache ab 程序)。你可以使用 redis-benchmark -h 来查看基准参数。以下参数被支持:Usage: redis-benchmark [-h <host>] [-p <port>] [-c <cli...转载 2019-02-17 22:17:25 · 688 阅读 · 0 评论 -
【Redis笔记】Redis 集群教程
Redis 集群教程本文档是Redis集群的一般介绍,没有涉及复杂难懂的分布式概念的赘述,只是提供了从用户角度来如何搭建测试以及使用的方法,如果你打算使用并深入了解Redis集群,推荐阅读完本章节后,仔细阅读 Redis 集群规范 一章。本教程试图提供最终用户一个简单的关于集群和一致性特征的描述请注意,本教程使用于Redis3.0(包括3.0)以上版本如果你计划部署集群,那么我们建...转载 2019-02-17 22:21:38 · 184 阅读 · 0 评论 -
【Redis笔记】Redis 集群规范
Redis 集群规范Redis 集群的目标Redis 集群是 Redis 的一个分布式实现,主要是为了实现以下这些目标(按在设计中的重要性排序):在1000个节点的时候仍能表现得很好并且可扩展性(scalability)是线性的。 没有合并操作,这样在 Redis 的数据模型中最典型的大数据值中也能有很好的表现。 写入安全(Write safety):那些与大多数节点相连的客户端所...转载 2019-02-17 22:22:52 · 199 阅读 · 0 评论 -
【Redis笔记】Redis 发布/订阅(Pub/Sub)
订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者)。而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅。订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的。这种发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑。为了订阅foo和bar,客户端发出一个订阅的频道名称:...转载 2019-02-13 14:53:50 · 459 阅读 · 0 评论 -
【Redis笔记】Redis Lua 脚本
EVAL script numkeys key [key ...] arg [arg ...]起始版本:2.6.0时间复杂度:取决于脚本本身的执行的时间复杂度。EVAL简介EVAL 和 EVALSHA 命令是从 Redis 2.6.0 版本开始的,使用内置的 Lua 解释器,可以对 Lua 脚本进行求值。EVAL的第一个参数是一段 Lua 5.1 脚本程序。 这段Lua脚本不需...转载 2019-02-13 15:14:05 · 312 阅读 · 0 评论 -
【Redis笔记】内存优化
小的聚合类型数据的特殊编码处理Redis2.2版本及以后,存储集合数据的时候会采用内存压缩技术,以使用更少的内存存储更多的数据。如Hashes,Lists,Sets和Sorted Sets,当这些集合中的所有数都小于一个给定的元素,并且集合中元素数量小于某个值时,存储的数据会被以一种非常节省内存的方式进行编码,使用这种编码理论上至少会节省10倍以上内存(平均节省5倍以上内存)。并且这种编码技术...转载 2019-02-13 16:08:34 · 187 阅读 · 0 评论 -
【Redis笔记】过期(Expires)
EXPIRE key seconds起始版本:1.0.0时间复杂度:O(1)设置key的过期时间,超过时间后,将会自动删除该key。在Redis的术语中一个key的相关超时是不确定的。超时后只有对key执行DEL命令或者SET命令或者GETSET时才会清除。 这意味着,从概念上讲所有改变key的值的操作都会使他清除。 例如,INCR递增key的值,执行LPUSH操作,或者用HSET...转载 2019-02-13 16:18:06 · 2540 阅读 · 2 评论 -
【Redis笔记】将Redis当做使用LRU算法的缓存来使用
将redis当做使用LRU算法的缓存来使用当Redis被当做缓存来使用,当你新增数据时,让它自动地回收旧数据是件很方便的事情。这个行为在开发者社区非常有名,因为它是流行的memcached系统的默认行为。LRU是Redis唯一支持的回收方法。本页面包括一些常规话题,Redis的maxmemory指令用于将可用内存限制成一个固定大小,还包括了Redis使用的LRU算法,这个实际上只是近似的L...转载 2019-02-13 17:39:17 · 145 阅读 · 0 评论 -
【Redis笔记】事务
事务MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。 EXEC 命令负责触发...转载 2019-02-13 18:30:43 · 161 阅读 · 0 评论 -
【Redis笔记】Redis 大量数据插入
Redis 大量数据插入有些时候,Redis实例需要装载大量用户在短时间内产生的数据,数以百万计的keys需要被快速的创建。我们称之为大量数据插入(mass insertion),本文档的目标就是提供如下信息:Redis如何尽可能快的处理数据。使用Luke协议使用正常模式的Redis 客户端执行大量数据插入不是一个好主意:因为一个个的插入会有大量的时间浪费在每一个命令往返时间上。使...转载 2019-02-13 23:07:39 · 1631 阅读 · 0 评论 -
【Redis笔记】Redis从文件中批量插入数据
Redis从文件中批量插入数据简介在redis中,有时候需要批量执行某些命令,但是在redis的redis-cli下,只能一条条的执行指令,实在太麻烦了!想到这,你是不是蓝瘦香菇? 如果能将要执行的指令一行行存储到文件中,然后用一行命令将文件中的命令一次执行完成,那肯定爽死了!所以下面,我要带你冒着手指怀孕的危险,让你爽一把:创建文件首先创建一个txt文件,将要执行的指令一行一...转载 2019-02-13 23:14:57 · 2409 阅读 · 0 评论 -
【Redis笔记】分区(Partitioning)
分区:怎样将数据分布到多个redis实例分区是将你的数据分发到不同redis实例上的一个过程,每个redis实例只是你所有key的一个子集。文档第一部分将介绍分区概念,第二部分介绍分区的另外一种可选方案。为什么分区非常有用Redis分区主要有两个目的:分区可以让Redis管理更大的内存,Redis将可以使用所有机器的内存。如果没有分区,你最多只能使用一台机器的内存。 分区使Red...转载 2019-02-13 23:22:21 · 1140 阅读 · 0 评论 -
【Redis笔记】Redis高可用性
Redis 的 Sentinel 文档Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其...转载 2019-02-17 21:52:24 · 162 阅读 · 0 评论 -
【Redis笔记】Redis如何处理客户端连接
Redis如何处理客户端连接本文档提供有关Redis如何处理来自客户端的信息,从网络层来看包含以下几点:连接、超时、缓冲区以及一些其它类似的主题。 这篇文档所包含的信息 仅仅适用于Redis的2.6或者更高版本。客户端的连接的建立Redis通过在TCP端口上进行监听,或者Unix socket(如果启用)的方式来接受客户端的连接。当一个新的客户端连接被接受执行以下操作:当Redis...转载 2019-02-17 21:47:53 · 534 阅读 · 0 评论 -
【Redis笔记】Redis安全性
Redis安全性本文档从以下几点提供了关于Redis安全主题的介绍:Redis提供的访问控制,代码安全问题,通过外部的恶意输入触发的攻击和其它类似的主题也包含在内。Redis常规安全模式Redis被设计成仅有可信环境下的可信用户才可以访问。这意味着将Redis实例直接暴露在网络上或者让不可信用户可以直接访问Redis的tcp端口或Unix套接字,是不安全的。正常情况下,使用Redi...转载 2019-02-17 21:24:51 · 778 阅读 · 2 评论 -
【Redis笔记】Redis Strings
Redis Strings这是最简单Redis类型。如果你只用这种类型,Redis就像一个可以持久化的memcached服务器(注:memcache的数据仅保存在内存中,服务器重启后,数据将丢失)。我们用redis-cli来玩一下字符串类型:> set mykey somevalueOK> get mykey"somevalue"正如你所见到的,通常用SET ...转载 2019-01-28 22:57:31 · 190 阅读 · 0 评论 -
【Redis笔记】Redis Lists
Redis Lists要说清楚列表数据类型,最好先讲一点儿理论背景,在信息技术界List这个词常常被使用不当。例如”Python Lists”就名不副实(名为Linked Lists),但他们实际上是数组(同样的数据类型在Ruby中叫数组)。一般意义上讲,列表就是有序元素的序列:10,20,1,2,3就是一个列表。但用数组实现的List和用Linked List实现的List,在属性方面大...转载 2019-01-28 23:16:40 · 256 阅读 · 0 评论 -
【Redis笔记】Redis Hash
Redis Hashes —Redis hash 看起来就像一个 “hash” 的样子,由键值对组成:> hmset user:1000 username antirez birthyear 1977 verified 1OK> hget user:1000 username"antirez"> hget user:1000 birthyear"1977"&...转载 2019-01-28 23:20:28 · 523 阅读 · 0 评论 -
【Redis笔记】Redis Sets
Redis Sets —Redis Set 是 String 的无序排列。SADD 指令把新的元素添加到 set 中。对 set 也可做一些其他的操作,比如测试一个给定的元素是否存在,对不同 set 取交集,并集或差,等等。> sadd myset 1 2 3(integer) 3> smembers myset1. 32. 13. 2现在我已经把三个元素加到...转载 2019-01-28 23:46:17 · 366 阅读 · 0 评论 -
【Redis笔记】Redis Sorted sets
Redis Sorted sets —Sorted sets are a data type which is similar to a mix between a Set and a Hash. Like sets, sorted sets are composed of unique, non-repeating string elements, so in some sense a so...转载 2019-01-28 23:50:41 · 297 阅读 · 0 评论 -
【Redis笔记】Redis Bitmaps
Bitmaps —位图不是实际的数据类型,而是在String类型上定义的一组面向位的操作。由于字符串是二进制安全blob,并且它们的最大长度为512 MB,因此它们适合设置2 ^ 32个不同的位。位操作分为两组:恒定时间单位操作,如将位设置为1或0,或获取其值,以及对位组进行操作,例如计算给定位范围内的设置位数(例如,人口统计)。位图的最大优势之一是它们在存储信息时通常可以节省大量空间...转载 2019-01-28 23:52:45 · 288 阅读 · 0 评论 -
【Redis笔记】Redis HyperLogLogs
HyperLogLogs —A HyperLogLog is a probabilistic data structure used in order to count unique things (technically this is referred to estimating the cardinality of a set). Usually counting unique item...转载 2019-01-29 00:02:02 · 225 阅读 · 0 评论 -
【Redis笔记】Redis GEO
将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作。该命令以采用标准格式的参数x,y,所以经度必须在纬度之前。这些坐标的限制是可以被编入索引的,区域面积可以很接近极点但是不能索引。具体的限制,由EPSG:900913 / EPSG:378...转载 2019-01-29 00:03:35 · 501 阅读 · 0 评论 -
【Redis笔记】Redis键空间通知
Redis键空间通知重要:键空间通知功能自2.8.0版本开始可用。功能概述键空间通知允许客户端订阅发布/订阅频道,以便以某种方式接收影响Redis数据集的事件。可能接收的事件示例如下:所有影响给定键的命令。 所有接收LPUSH操作的键。 所有在数据库0中到期的键。事件使用Redis的普通发布/订阅层传递,因此实现了发布/订阅的客户端无需修改即可使用此功能。由于Redi...转载 2019-02-14 23:35:14 · 1565 阅读 · 0 评论 -
【Redis笔记】Redis 管道(Pipelining)
请求/响应协议和RTTRedis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 服务端处理命令,并将结果返回给客户端。因此,例如下面是4个命令序列执行情况:Client: INCR X Server: 1 Client: INCR...转载 2019-01-29 23:59:59 · 314 阅读 · 0 评论 -
【Redis笔记】Redis配置
Redis配置Redis可以在没有配置文件的情况下通过内置的配置来启动,但是这种启动方式只适用于开发和测试。合理的配置Redis的方式是提供一个Redis配置文件,这个文件通常叫做 redis.conf。redis.conf文件中包含了很多格式简单的指令如下:keyword argument1 argument2 ... argumentN关键字 参数1 参数2 ...转载 2019-02-16 15:18:12 · 106 阅读 · 0 评论 -
【Redis笔记】Redis复制
复制在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器(下文称 slave)能精确得复制主 Redis 服务器(下文称 master)的内容。每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本。这个系统的...转载 2019-02-16 17:16:37 · 243 阅读 · 0 评论 -
【Redis笔记】Redis 持久化
Redis 持久化Redis 提供了不同级别的持久化方式:RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储. AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大. 如果你只希望你的数据在服务器运行的时候...转载 2019-02-16 17:21:14 · 122 阅读 · 0 评论 -
【Redis笔记】Redis分布式锁
Redis分布式锁分布式锁在很多场景中是非常有用的原语, 不同的进程必须以独占资源的方式实现资源共享就是一个典型的例子。有很多分布式锁的库和描述怎么实现分布式锁管理器(DLM)的博客,但是每个库的实现方式都不太一样,很多库的实现方式为了简单降低了可靠性,而有的使用了稍微复杂的设计。这个页面试图提供一个使用Redis实现分布式锁的规范算法。我们提出一种算法,叫Redlock,我们认为这种...转载 2019-02-13 23:36:59 · 176 阅读 · 0 评论