redis

redis

想问一下 大家用redis存储java对象的时候是咋弄的呢 ?主要是为了多个节点间共享缓存

回复

周小泉 发起了问题 1 人关注 0 个回复 1120 次浏览 2018-02-12 12:26 来自相关话题

"请问 Redis 用作LRU缓存时 key类型只能是 string ?"

回复

周小泉 发起了问题 1 人关注 0 个回复 1254 次浏览 2018-02-12 12:26 来自相关话题

如何做到redis与mysql的同步的?

回复

周小泉 发起了问题 1 人关注 0 个回复 1272 次浏览 2018-02-12 12:25 来自相关话题

我想请问一下。如何确定来自某个IP的客户端对一台Redis服务器有读写操作呢

回复

周小泉 发起了问题 1 人关注 0 个回复 1257 次浏览 2018-02-12 12:25 来自相关话题

如何用shell操作redis . 例如,shell中连接mysql ,可以用mysql -e ,redis有相应的选项吗

回复

周小泉 发起了问题 1 人关注 0 个回复 1370 次浏览 2018-02-12 12:25 来自相关话题

Using Redis as an LRU cache文章翻译

colincheng 发表了文章 0 个评论 1478 次浏览 2015-11-04 10:34 来自相关话题

周末有空翻译了:http://redis.io/topics/lru-cache#maxmemory-configuration-directive ...查看全部
周末有空翻译了:http://redis.io/topics/lru-cache#maxmemory-configuration-directive
 
具体如下:
 
      当用Redis作为一个LRU存储时,有些时候是比较方便的,在你增添新的数据时会自动驱逐旧的数据。这种行为在开发者论坛是非常有名的,因为这是流行的memcached系统的默认行为。
 
      LRU实际上只是支持驱逐的方式之一。这页包含更多一般的Redis maxmemory指令的话题用于限制内存使用到一个定额,同时它也深入的涵盖了Redis所使用的LRU算法,实际上是精确LRU的近似值。
 
 
一、Maxmemory设置指令
 
       Maxmemory设置指令用于配置Redis的数据集使用指定量的内存。可以用redis conf.file设置指令,或者可以在稍晚的时候在运行时间用config set命令。
 
       例如,为了设置内存局限于100百万字节,下列指令可在redis.conf file内使用。设置maxmemory到零使得没有内存限制。这是64位系统的默认行为,而32位系统使用3GB内隐记忆极限。
[code]maxmemory 100mb
[/code]
 
       当达到指定量的内存后,就可以选择不同的行为,称为策略。Redis可以返回错误的指令,导致使用更多的内存,或者为了每次增加新的数据后返回指定的内存,它可以驱逐一些旧的数据。
 
 
二、驱逐策略
 
当到达maxmemory极限时,使用maxmemory-策略配置指令来执行具体的Redis动作。
 
以下策略可以使用:
 
1、noeviction:达到内存限额后返回错误,客户尝试可以导致更多内存使用的命令(大部分写命令,但DEL和一些例外)
2、allkeys-lru:为了给新增加的数据腾出空间,驱逐键先试图移除一部分最近使用较少的(LRC)。
3、volatile-lru:为了给新增加的数据腾出空间,驱逐键先试图移除一部分最近使用较少的(LRC),但只限于过期设置键。
4、allkeys-random: 为了给新增加的数据腾出空间,驱逐任意键。
5、volatile-random: 为了给新增加的数据腾出空间,驱逐任意键,但只限于有过期设置的驱逐键。
6、volatile-ttl: 为了给新增加的数据腾出空间,驱逐键只有秘钥过期设置,并且首先尝试缩短存活时间的驱逐键。
 
如果没有秘钥去驱逐匹配先决条件,策略volatile-lru, volatile-random 和volatile-ttl行为很像noeviction。
 
那么根据你应用的访问模式选择正确的驱逐策略是很重要的。然而在应用运行时你可以在运行时间重新设置策略,并且监控缓存缺失的数量并为了调整你的设置点击Redis信息输出。
 
三、近似LRU算法
 
        Redis的LRU算法不是准确的实现。也就是说Redis没有为逐出选择 最好的候选人 ,也就是没有选择过去最后被访问离现在最久的。反而 是去执行一个 近似LRU的算法,通过抽样少量的key,并且逐出抽样中最后被访问离现在最久的key(最老的访问时间)。
       在Redis 3.0(目前的测试版),算法被改进了,使用了一个逐出最佳候选池。改进了算法的性能,使它更加近似真正LRU算法。
       算法中,关于逐出检测的样品数量,你可以自己去调整。配置参数是:
[code]maxmemory-samples 5
[/code]
 
       Redis没有使用真正实现LRU算是的原因是,因为消耗更多的内存。然而对于使用Redis的应用来说,事实上是等价的。下面是Redis的LRU算法和真正LRU算法的比较:

       给出配置数量的key生成上面的图表。key从第一行到最后一行被访问,那么第一个key是LRU算法中最好的逐出候选者。之后有50%的key被添加,那么一半的旧key被逐出。
 
在上图中你可以看见3个明显的区别:
1、浅灰色带是被逐出的对象。
2、灰色带是没有被逐出的对象。
3、绿色带是被添加的对象。
 
       LRU理论实现是在所有的旧key中前一半被逐出。Redis使用的是近似过期的key被逐出。
如你所见,3.0的工作比2.8更好,然而在2.8版本中,大多数最新访问对象的仍然保留。在3.0使用样品为10 时,性能非常接近理论上的LRU算法。
 
       注意:LRU仅仅是一个预测模式,给出的key很可能在未来被访问。此外,如果你的数据访问模式类似于幂律(线性的),大多数key都可能被访问那么这个LRU算法的处理就是非常好的。
 
       在实战中 ,我们发现使用幂律(线性的)的访问模式,在真正的LRU算法和Redis的LRU算法之间差异很小或者不存在差异。
 
       你可以提升样品大小配置到10,它将接近真正的LRU算法,并且有不同错过率,但是要消耗更多的CPU。
在调试时使用不同的样品大小去调试非常简单,使用命令CONFIG SET  maxmemory-samples  实现。
 
 
 
 
 
 

nosql数据库比较

唐半张 发表了文章 0 个评论 1834 次浏览 2015-10-10 10:07 来自相关话题

nosql数据库比较 互联网公司常用的基本集中在以下几种,每种只举一个比较常见或者应用比较成功的例子吧。 1. In-Memory KV Store : Redis in memory ke ...查看全部
nosql数据库比较
互联网公司常用的基本集中在以下几种,每种只举一个比较常见或者应用比较成功的例子吧。
1. In-Memory KV Store : Redis
in memory key-value store,同时提供了更加丰富的数据结构和运算的能力,成功用法是替代memcached,通过checkpoint和commit log提供了快速的宕机恢复,同时支持replication提供读可扩展和高可用。
2. Disk-Based KV Store: Leveldb
真正基于磁盘的key-value storage, 模型单一简单,数据量不受限于内存大小,数据落盘高可靠,Google的几位大神出品的精品,LSM模型天然写优化,顺序写盘的方式对于新硬件ssd再适合不过了,不足是仅提供了一个库,需要自己封装server端。
3. Document Store: Mongodb
分布式nosql,具备了区别mysql的最大亮点:可扩展性。mongodb 最新引人的莫过于提供了sql接口,是目前nosql里最像mysql的,只是没有ACID的特性,发展很快,支持了索引等特性,上手容易,对于数据量远超内存限制的场景来说,还需要慎重。
4. Column Table Store: HBase
这个富二代似乎不用赘述了,最大的优势是开源,对于普通的scan和基于行的get等基本查询,性能完全不是问题,只是只提供裸的api,易用性上是短板,可扩展性方面是最强的,其次坐上了Hadoop的快车,社区发展很快,各种基于其上的开源产品不少,来解决诸如join、聚集运算等复杂查询

求教 RDD如何写入redis

回复

VanquisherCsn 发起了问题 2 人关注 0 个回复 4569 次浏览 2015-09-09 15:26 来自相关话题

脚本在运行的过程使用SHUTDOWN NOSAVE

zp0824 回复了问题 2 人关注 1 个回复 3141 次浏览 2015-09-02 09:49 来自相关话题

jedis instance 表现很奇怪

zp0824 回复了问题 2 人关注 1 个回复 2419 次浏览 2015-09-02 09:48 来自相关话题

redis 日志的记录

zp0824 回复了问题 2 人关注 1 个回复 3359 次浏览 2015-09-02 09:35 来自相关话题

《Redis 多机特性工作原理简介》示例中的集群中7000没有Slave,请问如何进行故障转移?

回复

封尘 发起了问题 1 人关注 0 个回复 2389 次浏览 2015-08-27 09:29 来自相关话题

《Redis 多机特性工作原理简介》主服务器和集群中的主节点,从服务器和集群中的从节点有什么区别?

zp0824 回复了问题 2 人关注 1 个回复 4584 次浏览 2015-08-27 09:28 来自相关话题

mapreduce清理log的问题

zp0824 回复了问题 2 人关注 5 个回复 2875 次浏览 2015-08-23 16:50 来自相关话题

想问一下 大家用redis存储java对象的时候是咋弄的呢 ?主要是为了多个节点间共享缓存

回复

周小泉 发起了问题 1 人关注 0 个回复 1120 次浏览 2018-02-12 12:26 来自相关话题

"请问 Redis 用作LRU缓存时 key类型只能是 string ?"

回复

周小泉 发起了问题 1 人关注 0 个回复 1254 次浏览 2018-02-12 12:26 来自相关话题

如何做到redis与mysql的同步的?

回复

周小泉 发起了问题 1 人关注 0 个回复 1272 次浏览 2018-02-12 12:25 来自相关话题

我想请问一下。如何确定来自某个IP的客户端对一台Redis服务器有读写操作呢

回复

周小泉 发起了问题 1 人关注 0 个回复 1257 次浏览 2018-02-12 12:25 来自相关话题

如何用shell操作redis . 例如,shell中连接mysql ,可以用mysql -e ,redis有相应的选项吗

回复

周小泉 发起了问题 1 人关注 0 个回复 1370 次浏览 2018-02-12 12:25 来自相关话题

求教 RDD如何写入redis

回复

VanquisherCsn 发起了问题 2 人关注 0 个回复 4569 次浏览 2015-09-09 15:26 来自相关话题

脚本在运行的过程使用SHUTDOWN NOSAVE

回复

zp0824 回复了问题 2 人关注 1 个回复 3141 次浏览 2015-09-02 09:49 来自相关话题

jedis instance 表现很奇怪

回复

zp0824 回复了问题 2 人关注 1 个回复 2419 次浏览 2015-09-02 09:48 来自相关话题

redis 日志的记录

回复

zp0824 回复了问题 2 人关注 1 个回复 3359 次浏览 2015-09-02 09:35 来自相关话题

《Redis 多机特性工作原理简介》示例中的集群中7000没有Slave,请问如何进行故障转移?

回复

封尘 发起了问题 1 人关注 0 个回复 2389 次浏览 2015-08-27 09:29 来自相关话题

mapreduce清理log的问题

回复

zp0824 回复了问题 2 人关注 5 个回复 2875 次浏览 2015-08-23 16:50 来自相关话题

Using Redis as an LRU cache文章翻译

colincheng 发表了文章 0 个评论 1478 次浏览 2015-11-04 10:34 来自相关话题

周末有空翻译了:http://redis.io/topics/lru-cache#maxmemory-configuration-directive ...查看全部
周末有空翻译了:http://redis.io/topics/lru-cache#maxmemory-configuration-directive
 
具体如下:
 
      当用Redis作为一个LRU存储时,有些时候是比较方便的,在你增添新的数据时会自动驱逐旧的数据。这种行为在开发者论坛是非常有名的,因为这是流行的memcached系统的默认行为。
 
      LRU实际上只是支持驱逐的方式之一。这页包含更多一般的Redis maxmemory指令的话题用于限制内存使用到一个定额,同时它也深入的涵盖了Redis所使用的LRU算法,实际上是精确LRU的近似值。
 
 
一、Maxmemory设置指令
 
       Maxmemory设置指令用于配置Redis的数据集使用指定量的内存。可以用redis conf.file设置指令,或者可以在稍晚的时候在运行时间用config set命令。
 
       例如,为了设置内存局限于100百万字节,下列指令可在redis.conf file内使用。设置maxmemory到零使得没有内存限制。这是64位系统的默认行为,而32位系统使用3GB内隐记忆极限。
[code]maxmemory 100mb
[/code]
 
       当达到指定量的内存后,就可以选择不同的行为,称为策略。Redis可以返回错误的指令,导致使用更多的内存,或者为了每次增加新的数据后返回指定的内存,它可以驱逐一些旧的数据。
 
 
二、驱逐策略
 
当到达maxmemory极限时,使用maxmemory-策略配置指令来执行具体的Redis动作。
 
以下策略可以使用:
 
1、noeviction:达到内存限额后返回错误,客户尝试可以导致更多内存使用的命令(大部分写命令,但DEL和一些例外)
2、allkeys-lru:为了给新增加的数据腾出空间,驱逐键先试图移除一部分最近使用较少的(LRC)。
3、volatile-lru:为了给新增加的数据腾出空间,驱逐键先试图移除一部分最近使用较少的(LRC),但只限于过期设置键。
4、allkeys-random: 为了给新增加的数据腾出空间,驱逐任意键。
5、volatile-random: 为了给新增加的数据腾出空间,驱逐任意键,但只限于有过期设置的驱逐键。
6、volatile-ttl: 为了给新增加的数据腾出空间,驱逐键只有秘钥过期设置,并且首先尝试缩短存活时间的驱逐键。
 
如果没有秘钥去驱逐匹配先决条件,策略volatile-lru, volatile-random 和volatile-ttl行为很像noeviction。
 
那么根据你应用的访问模式选择正确的驱逐策略是很重要的。然而在应用运行时你可以在运行时间重新设置策略,并且监控缓存缺失的数量并为了调整你的设置点击Redis信息输出。
 
三、近似LRU算法
 
        Redis的LRU算法不是准确的实现。也就是说Redis没有为逐出选择 最好的候选人 ,也就是没有选择过去最后被访问离现在最久的。反而 是去执行一个 近似LRU的算法,通过抽样少量的key,并且逐出抽样中最后被访问离现在最久的key(最老的访问时间)。
       在Redis 3.0(目前的测试版),算法被改进了,使用了一个逐出最佳候选池。改进了算法的性能,使它更加近似真正LRU算法。
       算法中,关于逐出检测的样品数量,你可以自己去调整。配置参数是:
[code]maxmemory-samples 5
[/code]
 
       Redis没有使用真正实现LRU算是的原因是,因为消耗更多的内存。然而对于使用Redis的应用来说,事实上是等价的。下面是Redis的LRU算法和真正LRU算法的比较:

       给出配置数量的key生成上面的图表。key从第一行到最后一行被访问,那么第一个key是LRU算法中最好的逐出候选者。之后有50%的key被添加,那么一半的旧key被逐出。
 
在上图中你可以看见3个明显的区别:
1、浅灰色带是被逐出的对象。
2、灰色带是没有被逐出的对象。
3、绿色带是被添加的对象。
 
       LRU理论实现是在所有的旧key中前一半被逐出。Redis使用的是近似过期的key被逐出。
如你所见,3.0的工作比2.8更好,然而在2.8版本中,大多数最新访问对象的仍然保留。在3.0使用样品为10 时,性能非常接近理论上的LRU算法。
 
       注意:LRU仅仅是一个预测模式,给出的key很可能在未来被访问。此外,如果你的数据访问模式类似于幂律(线性的),大多数key都可能被访问那么这个LRU算法的处理就是非常好的。
 
       在实战中 ,我们发现使用幂律(线性的)的访问模式,在真正的LRU算法和Redis的LRU算法之间差异很小或者不存在差异。
 
       你可以提升样品大小配置到10,它将接近真正的LRU算法,并且有不同错过率,但是要消耗更多的CPU。
在调试时使用不同的样品大小去调试非常简单,使用命令CONFIG SET  maxmemory-samples  实现。
 
 
 
 
 
 

nosql数据库比较

唐半张 发表了文章 0 个评论 1834 次浏览 2015-10-10 10:07 来自相关话题

nosql数据库比较 互联网公司常用的基本集中在以下几种,每种只举一个比较常见或者应用比较成功的例子吧。 1. In-Memory KV Store : Redis in memory ke ...查看全部
nosql数据库比较
互联网公司常用的基本集中在以下几种,每种只举一个比较常见或者应用比较成功的例子吧。
1. In-Memory KV Store : Redis
in memory key-value store,同时提供了更加丰富的数据结构和运算的能力,成功用法是替代memcached,通过checkpoint和commit log提供了快速的宕机恢复,同时支持replication提供读可扩展和高可用。
2. Disk-Based KV Store: Leveldb
真正基于磁盘的key-value storage, 模型单一简单,数据量不受限于内存大小,数据落盘高可靠,Google的几位大神出品的精品,LSM模型天然写优化,顺序写盘的方式对于新硬件ssd再适合不过了,不足是仅提供了一个库,需要自己封装server端。
3. Document Store: Mongodb
分布式nosql,具备了区别mysql的最大亮点:可扩展性。mongodb 最新引人的莫过于提供了sql接口,是目前nosql里最像mysql的,只是没有ACID的特性,发展很快,支持了索引等特性,上手容易,对于数据量远超内存限制的场景来说,还需要慎重。
4. Column Table Store: HBase
这个富二代似乎不用赘述了,最大的优势是开源,对于普通的scan和基于行的get等基本查询,性能完全不是问题,只是只提供裸的api,易用性上是短板,可扩展性方面是最强的,其次坐上了Hadoop的快车,社区发展很快,各种基于其上的开源产品不少,来解决诸如join、聚集运算等复杂查询