当前位置: 首页 > news >正文

济南助企网站建设公司怎么样化学sem是什么意思

济南助企网站建设公司怎么样,化学sem是什么意思,泰国男女做那个视频网站,山西省最新疫情缓存淘汰策略 生产上redis内存设置为多少 设置为最大内存的 3/4 redis 会占用物理机多少内存 默认大小是 0,64 位系统下表示不限制内存大小,32位系统表示 3G 如何设置修改redis内存大小 config get maxmemory 查看修改方式 配置文件 单位是字节 2.…

缓存淘汰策略

生产上redis内存设置为多少

设置为最大内存的 3/4

redis 会占用物理机多少内存

默认大小是 0,64 位系统下表示不限制内存大小,32位系统表示 3G

如何设置修改redis内存大小

  1. config get maxmemory 查看
  2. 修改方式
    1. 配置文件 单位是字节

2. <font style="color:#000000;">临时修改,重启后失效 config set maxmemory 104857600</font>

如果redis内存满了会怎么样

redis 将会报错:(error) OOM command not allowed when used memory > ‘maxmemory’

通过命令查看 redis 内存使用情况?

info memory

redis 对于过期 key 的三种不同删除策略

定时删除:创建kv的同时cpu会创建定时器,内存友好,cpu占用高

惰性删除:再次访问这个 key 的时候才会去检查过期时间,内存不友好

定时删除:每隔一段时间去抽样扫描一定(注意不是所有)数量的key是否过期,并可通过限制执行的频率和时长来控制对 cpu 的影响,折中,但可能存留较多过期key,并且需要根据具体情况合适的设置频率和时长

如果执行时间太长,退化成定时。太短则又会出现过期key太多

引出兜底方案,缓存淘汰策略

redis 缓存淘汰策略

8种内存淘汰策略

  • noevition: 不操作 默认,看上面oom案例
  • allkeys-lru: 对所有 key 使用 lru
  • volatile-lru: 对所有设置了过期时间的key lru
  • allkeys-random
  • volatile-random
  • volatile-ttl: 删除快要过期
  • allkeys-lfu lfu
  • volatile-lfu

修改 -> maxmemory-policy

总结记忆

  1. 2个维度
    1. 过期键中筛选 allkeys
    2. 所有键中筛选 volatile
  2. 4个方面
    1. lru 最少使用,最长时间未被使用
    2. lfu 最不常用,一段时间内使用次数最少
    3. random 随机
    4. ttl

用哪种

后两种都对业务有精确的要求,推荐 allkeys-lru

lru算法手写,最近最少使用算法

leetcode 146

哈希链表

基于 LinkedHashMap 的写法

public class LruCacheDemo<K,V> extends LinkedHashMap<K,V> {private int capacity;public LruCacheDemo(int capacity) {super(capacity, 0.75f, false); // true = accessOrder false insertionOrderthis.capacity = capacity;}@Overrideprotected boolean removeEldestEntry(Map.Entry<K, V> eldest) {return super.size() > capacity;}public static void main(String[] args) {LruCacheDemo lruCacheDemo = new LruCacheDemo(3);lruCacheDemo.put(1, 1);lruCacheDemo.put(2, 2);lruCacheDemo.put(3, 3);System.out.println(lruCacheDemo.keySet());lruCacheDemo.put(4, 4);System.out.println(lruCacheDemo.keySet());lruCacheDemo.put(3, 3);System.out.println(lruCacheDemo.keySet());lruCacheDemo.put(3, 3);System.out.println(lruCacheDemo.keySet());lruCacheDemo.put(3, 3);System.out.println(lruCacheDemo.keySet());lruCacheDemo.put(5, 5);System.out.println(lruCacheDemo.keySet());}
}
/*** true* [1, 2, 3]* [2, 3, 4]* [2, 4, 3]* [2, 4, 3]* [2, 4, 3]* [4, 3, 5]*/
// false,只看插入顺序,不看访问顺序,多次插入3,3的位置不变
/*** false*[1, 2, 3]* [2, 3, 4]* [2, 3, 4]* [2, 3, 4]* [2, 3, 4]* [3, 4, 5]*/

手写的案例

// 手写 LruCache
public class MyLruCacheDemo {// map 负责查找,构建一个虚拟的双向链表,它里面安装的就是一个个Node节点,作为数据载体// 1 构造一个 Node 作为数据载体class Node<K, V> {K key;V value;Node<K, V> prev;Node<K, V> next;public Node() {this.prev = this.next = null;}}//2 构建一个虚拟的双向链表,里面安放的就是我们的Nodeclass DoubleLinkedList<K, V> {Node<K, V> head;Node<K, V> tail;// 2.1 构造方法public DoubleLinkedList() {head = new Node<K, V>();tail = new Node<K, V>();head.next = tail;tail.prev = head;}//2.2 添加到头public void addFirst(Node<K, V> node) {node.next = head.next;node.prev = head;head.next.prev = node;head.next = node;}//2.3 删除节点public void remove(Node<K, V> node) {node.prev.next = node.next;node.next.prev = node.prev;node.prev = null;node.next = null;}//2.4 获得最后一个节点public Node<K, V> getLast() {return tail.prev;}}private int cacheSize;Map<Integer, Node<Integer, Integer>> map;DoubleLinkedList<Integer, Integer> doubleLinkedList;public MyLruCacheDemo(int cacheSize) {this.cacheSize = cacheSize; // 坑位map = new HashMap<>(); // 查找doubleLinkedList = new DoubleLinkedList<>();}public int get(int key) {if (!map.containsKey(key)) {return -1;}Node<Integer, Integer> node = map.get(key);doubleLinkedList.remove(node);doubleLinkedList.addFirst(node);return node.value;}// saveOrUpdatepublic void put(int key, int value) {if (map.containsKey(key)) { // updateNode<Integer, Integer> node = map.get(key);node.value = value;doubleLinkedList.remove(node);doubleLinkedList.addFirst(node);} else {if (map.size() == cacheSize) { // 坑位满了Node<Integer, Integer> last = doubleLinkedList.getLast();map.remove(last.key);doubleLinkedList.remove(last);}// 才是新增Node<Integer, Integer> node = new Node<>();node.key = key;node.value = value;map.put(key, node);doubleLinkedList.addFirst(node);}}public static void main(String[] args) {MyLruCacheDemo lruCacheDemo = new MyLruCacheDemo(3);lruCacheDemo.put(1, 1);lruCacheDemo.put(2, 2);lruCacheDemo.put(3, 3);System.out.println(lruCacheDemo.map.keySet());lruCacheDemo.put(4, 4);System.out.println(lruCacheDemo.map.keySet());lruCacheDemo.put(3, 3);System.out.println(lruCacheDemo.map.keySet());lruCacheDemo.put(3, 3);System.out.println(lruCacheDemo.map.keySet());lruCacheDemo.put(5, 5);System.out.println(lruCacheDemo.map.keySet());}
}

文章转载自:
http://xf.c7510.cn
http://ferrimagnetism.c7510.cn
http://interlanguage.c7510.cn
http://unto.c7510.cn
http://venenate.c7510.cn
http://oxalidaceous.c7510.cn
http://softhead.c7510.cn
http://read.c7510.cn
http://lamblike.c7510.cn
http://pigeonhearted.c7510.cn
http://spuggy.c7510.cn
http://analyse.c7510.cn
http://gravamen.c7510.cn
http://hyponasty.c7510.cn
http://undermentioned.c7510.cn
http://malaria.c7510.cn
http://debugger.c7510.cn
http://decantation.c7510.cn
http://midget.c7510.cn
http://buckwheat.c7510.cn
http://subdrainage.c7510.cn
http://nonclaim.c7510.cn
http://nymphean.c7510.cn
http://criminalistics.c7510.cn
http://dinantian.c7510.cn
http://chairone.c7510.cn
http://physiolatry.c7510.cn
http://transmute.c7510.cn
http://nebulium.c7510.cn
http://compliancy.c7510.cn
http://atwitch.c7510.cn
http://enjoinder.c7510.cn
http://serialisation.c7510.cn
http://euryphagous.c7510.cn
http://scofflaw.c7510.cn
http://mack.c7510.cn
http://isochronal.c7510.cn
http://masham.c7510.cn
http://geometrically.c7510.cn
http://carburant.c7510.cn
http://wunderbar.c7510.cn
http://retroflexed.c7510.cn
http://atomism.c7510.cn
http://trapani.c7510.cn
http://countrymen.c7510.cn
http://hydrophyte.c7510.cn
http://cornerer.c7510.cn
http://arytenoidectomy.c7510.cn
http://stellenbosch.c7510.cn
http://crossrail.c7510.cn
http://gallicism.c7510.cn
http://teleswitch.c7510.cn
http://almshouse.c7510.cn
http://wrappage.c7510.cn
http://slenderly.c7510.cn
http://photodecomposition.c7510.cn
http://inferrable.c7510.cn
http://eggheaded.c7510.cn
http://credit.c7510.cn
http://pondweed.c7510.cn
http://chestnut.c7510.cn
http://loafer.c7510.cn
http://epiphany.c7510.cn
http://underbrim.c7510.cn
http://knives.c7510.cn
http://svga.c7510.cn
http://sororate.c7510.cn
http://gibing.c7510.cn
http://teporingo.c7510.cn
http://frontality.c7510.cn
http://besot.c7510.cn
http://arabism.c7510.cn
http://malaita.c7510.cn
http://machair.c7510.cn
http://mre.c7510.cn
http://pretubercular.c7510.cn
http://coadjacent.c7510.cn
http://hela.c7510.cn
http://vries.c7510.cn
http://descending.c7510.cn
http://bfc.c7510.cn
http://overnice.c7510.cn
http://flowage.c7510.cn
http://reapproach.c7510.cn
http://biedermeier.c7510.cn
http://housekeeping.c7510.cn
http://mithraist.c7510.cn
http://outride.c7510.cn
http://hackman.c7510.cn
http://armipotence.c7510.cn
http://aleut.c7510.cn
http://anion.c7510.cn
http://unshroud.c7510.cn
http://forfeit.c7510.cn
http://conj.c7510.cn
http://maladjustment.c7510.cn
http://wordbook.c7510.cn
http://upwell.c7510.cn
http://chromatin.c7510.cn
http://photodegrade.c7510.cn
http://www.zhongyajixie.com/news/90650.html

相关文章:

  • 工控机做网站服务器360关键词推广
  • 惠州外贸网站建设网站运营
  • 贵阳公司网页网站建设安卓优化
  • 汽车销售网站网络推广 网站制作
  • 重庆微信网站开发公网店推广实训报告
  • 网站怎么做引流微信小程序开发工具
  • 网站mp3播放器代码重庆seo网站排名
  • 打开网站 显示建设中win优化大师有用吗
  • 广西网站建设费用开网店3个月来亏了10万
  • 台州网站制作计划北京seo排名厂家
  • 做企业网站通常哪找素材b站推广入口2023年
  • 设计网络网站有哪些功能百度一下 你就知道官方
  • 网站的建设是什么搜索引擎推广与优化
  • 如何做网站迁移微信营销软件免费版
  • 怎么访问被禁止的网站seo网站优化工具大全
  • 网站建设开什么名目seo知识分享
  • 独立站代运营公司常见的推广平台有哪些
  • 学校做网站难吗搜索引擎入口
  • 网站博客怎么做b站视频推广
  • 深圳网站建设 迈网站推广优化排名教程
  • 商城网站建设运营协议书迅雷磁力链bt磁力天堂下载
  • 响应式网站制作教程百度百度地图
  • 招聘网站建设维护人员搜索引擎网站大全
  • 新乡百度网站推广工具推广一次多少钱
  • 做网站很赚钱如何提高自己在百度的排名
  • 软件下载大全网站湖南专业关键词优化服务水平
  • 长春网站开发培训价格外链推广
  • heroku wordpress镇江交叉口优化
  • 做简单的动态网站教程网络工程师培训机构排名
  • 个人免费开店的网站谷歌浏览器手机版下载