MySQL里有2000w数据,redis中只存20w数据,如何保证redis中数据都是热点数据

计算20w的热点数据占据内存的大小。然后在Redis中,配置最大内存容量,在redis.conf文件maxmemory <bytes>标签中配置。
当redis内存数据大小上升到一定大小的时候,就会施行数据淘汰策略。
Redis中提供了6中数据淘汰策略:
1.volatitle-lru 从设置了过期时间的数据集中,选择最近最少使用的数据删除
2.volatitle-ttl 从设置了过期时间的数据集中,选择将要过期的数据删除
3.volatitle-random 从设置了过期时间的数据中,随机选择数据进行删除
4.Allkeys-lru 从数据集中挑选最近最少使用的数据删除
5.Allkeys-random 从数据集中随机挑选数据进行淘汰
6.no-enviction(驱逐):禁止淘汰数据
因为我们的应用保存热点数据,也就是对缓存的访问符合幂律分布,所以应该选择Allkeys-lru淘汰策略。存放热点数据,不能为数据设置过期时间,设置过期时间也会占用内存。

原文地址:https://www.cnblogs.com/sxshe/p/12165590.html

时间: 2024-11-13 02:18:23

MySQL里有2000w数据,redis中只存20w数据,如何保证redis中数据都是热点数据的相关文章

2000w数据,redis中只存放20w的数据,如何保证redis中的数据都是热点数据

redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略. redis 提供 6种数据淘汰策略:voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰 volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰allkeys-lru:从数据集(

MySQL Schema设计(四)一个MySQL里的JQuery:common_schema (先存着)

来源:http://blog.itpub.net/26515977/viewspace-1208257/ 我们总要在一定的框架中活着,框架的构成有来自法律,有来自道德的,还有来自潜规则的.大部分人只求安生的活着,玩命的人毕竟是少数,有人打破框架平度青云,也有人打破框却架坠落深渊.每每跟做开发的同学沟通,就会听到一大滩框架名称,觉得很是高上大的样子.但他山之石可以攻玉,在MySQL当中也是有框架,这便是我们要介绍的common_schema.高性能MySQL一书作者 Baron Schwartz曾

5.如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?

作者:中华石杉 作者:中华石杉 面试题 如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么? 面试官心理分析 其实问这个问题,主要是考考你,redis 单机能承载多高并发?如果单机扛不住如何扩容扛更多的并发?redis 会不会挂?既然 redis 会挂那怎么保证 redis 是高可用的? 其实针对的都是项目中你肯定要考虑的一些问题,如果你没考虑过,那确实你对生产系统中的问题思考太少. 面试题剖析 如果你用 redis 缓存技术的话,

面试系列15 如何保证Redis的高并发和高可用

就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解过这一块内容,redis高并发.高可用.缓存一致性 redis高并发:主从架构,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万QPS,多从用来查询数据,多个从实例可以提供每秒10万的QPS. redis高并发的同时,还需要容纳大量的数据:一主多从,每个实例都容纳了完整的数据,比

sql 数据库中只靠一个数据,查询到所在表和列名

有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,在网上搜了一下,找到一个比较好的方法,通过一个存储过程实现的.只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名. 前提是要将这个存储过程放在所查询的数据库. 注:1步骤是创建存储过程,可以在任何一个数据库中使用,2步骤是调用它来查找数据库中所有牵扯到的列以及对应的表. 只需要一个数据 真是非常方便 一.首先 点击新建查询 ,左上角选择到自己的数据库,然后把下面这段复制进去  然后运行 CREATE PROCEDURE [

sqlserver2000及以上版本导出数据到mysql里的详细图解

首先参照这里:http://www.jb51.net/softjc/158485.html 最好odbc用现在mysql官网上推荐的5.1.XX版本,因为要与jdk和tomcat的系统版本保持一致, 所以本人下的是winX86--32bit版本的odbc驱动包.各位随意啦~ win7x64位系统如何装32位的odbc驱动,请看这篇文章:http://www.cnblogs.com/hangaozu/p/5374968.html 然后,看这个图点OK: 最最关键的就要来了,用sqlserver的D

JDBC远程从一个MySql数据库中的一张表里面读出数据(这个数据库需要用SSH隧道连接,大约8W条数据),然后分别插入到另一个数据库中的两张表里

package com.eeepay.lzj.db; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.jcraft.jsch.JSch; import com.jcraft.jsc

MySQL 里的 Timestrap 和 DateTime 和 Java 中的 Date

世界标准时(UTC) 和 格林威治标准时(GMT) 怎么样的时间算是准确的呢?例如这一分种内是60s ,而下一分钟实际走到了59秒的时候却显示一分钟到了,即是时间快了,这样定义为不准确.下面两个解释可以帮助理解两者的区别. UTC是我们现在用的时间标准,GMT是老的时间计量标准.UTC是根据原子钟来计算时间,而GMT是根据地球的自转和公转来计算时间,也就是太阳每天经过位于英国伦敦郊区的皇家格林威治天文台的时间就是中午12点.由于现在世界上最精确的原子钟50亿年才会误差1秒(最精确原子钟问世:50

Hibernate中,将session绑定到线程时,在保存和查询数据的代码里,要正确的关闭session

比如有个保存的方法 // 保存 public void save(){ Transaction t = XXX Session s = getSession.beginTransaction(); XXX s.save(); XXX // 关闭session HibernateFactory.closeSession(); } ///查询 public void query(){ List list = query.list(); // 关闭session HibernateFactory.cl