*** 大家图片看不到的可以访问这个地址哈(都是微信图片封锁的锅),

https://mp.weixin.qq.com/s/JaCg3sb-OqGzUI06LNJj_A
或者关注我的公众号:大土豆爱开发

无论是客户端还是服务端,缓存都是必不可少的一种提升用户体验的策略,大家在平时开发中,有意无意都会用到缓存,比如说 Android 开发的同学们,所有的图片框架,基本都有用到缓存技术,服务端那就完全不用说了。

说说通用的缓存策略,有两种,下面来点图,这个是我司内部分享的图,我盗用下

第一种方案,客户端使用的比较多,缓存和 DB(或者文件)同步更新,服务端一般都是用第二种方案,现在服务端的一些框架已经比较成熟了,像 spring 的@Cachable 注解,就搞定了很多事情,客户端的缓存相对来说简单一些,这期重点来说说服务端的缓存应用,再确定一点,我们来说说 Redis 这个有趣的东西。

为什么要用Redis举例呢,因为我认为Redis服务是缓存框架的集大成者,除了一般的内存缓存外,还可以缓存持久化,做任务队列等。我就来说说Redis的几种典型用法吧

  1. 传统的key-value存储,这个就不用说了吧,所有缓存框架必备的功能

  2. hash功能,在传统kv之外,提供了一个类似hashmap的对应关系,一个key可以对应许多hashkey和value,比如存储商品以及购买人的数量上,key为商品id,hashkey为购买人的userID,value为购买的数量

  3. list功能,和Java的List类似,push(key,List)这样,某个key对应一个队列,可以存储List数据,这种用法可以用来做简单的任务队列,需要加数据时就push到队列里面,然后消费者用一个1秒的定时任务,去这个队列里面取东西(这个只是简单的任务队列做法,Redis还提供了一种即时的回调,监听机制的消息队列做法,更专业点)

  4. Set功能,和Java的Set类似,用法和上面一样,唯一不同的就是数据是不能重复的

  5. Sorted Set,也就是zset,member/score功能,member是成员,socre是得分,这种结构通常用于排行榜,member为userID,score为得分,比如说100分,99分这样,用这种数据结构可以根据score来自动排序

  6. 最后一点就是批量操作啦,常用的有批量和管道,批量操作可以看做是对同一个数据格式的批量操作,比如设置100key,以及对应的value,一个批量动作搞定。管道的范围更大一些,可以看做是无数的操作放到一起执行,比如你要100个kv操作,100个hash操作,100个zset操作,都可以放到一个管道里面

Redis3.0之后加入了Redis Cluster的集群功能,之前的各种东西现在用起来会有点问题,脚本啊,管道啊,和单点的操作不一样,这边先列举几个我踩过的坑,希望能起到抛砖引玉的作用

1.不支持普通的管道操作,redistemplate.excutepipeline这么执行,需自己封装管道操作类,不能支持同一个管道操作,里面有多种找错。比如说又有kv,又又hash-kv

2.zset的一些操作也无法redistemplate直接使用,得自己封装

3.配置集群中的某一台和配置全部机器的效果是一样的

4.不支持任意的脚本操作,比如Java代码调用lua脚本的操作,有可能这个脚本就没法执行,需要考虑这个脚本在redis集群上能否执行

我司做了一些简单的封装,主要就是根据key算出是哪个slot,再根据slot算出在集群中的哪一台机器上,然后同一台机器上的操作放到一台管道操作上。

大家有兴趣的话可以关注我的公众号:大土豆爱开发,爱开发,爱生活,技术包括且不仅限于Android,JavaEE,Git等,已经有几百位和你们一样爱智求真的小伙伴了,赶紧加入吧

转载于:https://www.cnblogs.com/mark888/p/7907912.html

说说缓存,说说Redis相关推荐

  1. java 分布式 redis缓存技术_JAVA架构师系列课程分布式缓存技术Redis权威指南,资源教程下载...

    课程名称 JAVA架构师系列课程分布式缓存技术Redis权威指南,资源教程下载 课程目标 本课程从0基础开始,对redis的方方面面进行细粒度的讲解:包括基础操作.高级命令.各种集群模式.动态增减节点 ...

  2. 缓存层redis总结

    缓存层redis总结 - 醉魔君 - 博客园 redis - 标签 - renpingsheng - 博客园

  3. 技术解读丨分布式缓存数据库Redis大KEY问题定位及优化建议

    摘要:如何定位分布式缓存数据库Redis大KEY问题,实操案例带你掌握优化方法. [背景] 访问Redis 5.0 cluster集群出现OOM报错,报错信息为(error) OOM command ...

  4. 构建高性能数据库缓存之redis主从复制

    一.什么是redis主从复制? 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制 ...

  5. 高性能网站架构之缓存篇—Redis集群搭建

    看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...

  6. Spring Boot缓存实战 Redis

    Spring boot默认使用的是SimpleCacheConfiguration,即使用ConcurrentMapCacheManager来实现缓存.但是要切换到其他缓存实现也很简单.下面是使用re ...

  7. 新课发布-SpringBoot2.0缓存中间件Redis技术入门与实战(抢红包系统设计与实战)

    概要介绍:历经半个多月的时间,Debug呕心沥血.亲自录制的 "缓存中间件Redis技术入门与应用场景实战(SpringBoot2.x + 抢红包系统设计与实战)"的新课终于完成了 ...

  8. Shiro的缓存交给redis管理

    Shiro的缓存交给redis管理 标签(空格分隔):Shiro redis 前言: 以下方式只是单机版的redis使用 一.导入Shiro和redis的jar jedis-2.7.3.jarshir ...

  9. oracle缓存和Redis,说说数据缓存那点事:Redis和memcached对比

    [此为"一森咖记"公众号--第86篇文章] 本文预计阅读15分钟 [引言] 当我们为一个并发量较大的应用做数据架构时,会考虑使用缓存,意欲达到三个目标: 1. 加快用户访问速度,提 ...

  10. springboot:缓存不止redis,学会使用本地缓存ehcache

    0. 引言 随着redis的普及,更多的同学对redis分布式缓存更加熟悉,但在一些实际场景中,其实并不需要用到redis,使用更加简单的本地缓存即可实现我们的缓存需求. 今天,我们一起来看看本地缓存 ...

最新文章

  1. Oracle分页存储过程
  2. zynq上NEON进行fft
  3. Android表格布局(Table Layout)
  4. 【BZOJ】 3238: [Ahoi2013]差异
  5. 【转帖】Reporting Service rdl报表,在aspx页面显示一张完整的RDL报表
  6. LeetCode 第 19 场双周赛(231 / 1120,前20.6%)
  7. 《浪潮之巅》完全系类——IT人士必读经典
  8. 程序设计中的一些感悟
  9. mockjs的介绍、基本使用和封装
  10. go学习笔记-运算符
  11. Windows SharePoint Services Search和Office SharePoint Server Search的区别
  12. 三星emcp型号详解_eMCP终将成为过去式?解析:三星、美光所推出的uMCP为何物?...
  13. python 对比文件内容差异_Python-文件差异对比
  14. SiamFC代码讲解,训练过程讲解
  15. Windows下最快的磁盘空间分析软件——WizTree
  16. java安装报错循环冗余检查_Java中循环冗余校验的实现方式介绍
  17. 海康ISAPI透传ftp
  18. 最受DBA欢迎的数据库技术文档-巡检篇
  19. 【智能卡】智能卡之ISO7816
  20. 如何查看Win11的CUDA版本

热门文章

  1. 将VMware平台虚拟机瞬时恢复并在线迁移至深信服Sangfor平台
  2. 弘辽科技:如何做好宝贝的详情页?有哪些要注意的问题?
  3. 初识JQuery框架的基本使用
  4. Flink SQL:Queries(Group Aggregation)
  5. 如何判断html按钮是否点击,jquery/js如何判断按钮是否被点击?
  6. 布鲁斯口琴,我的最爱!!!
  7. 诺基亚进入NM时代,手机系统三足鼎立!
  8. nx-shell 文件管理器_linux文件管理命令
  9. 开始在CSDN上学会员免费课程
  10. 关系数据库理论-范式