说说缓存,说说Redis
*** 大家图片看不到的可以访问这个地址哈(都是微信图片封锁的锅),
无论是客户端还是服务端,缓存都是必不可少的一种提升用户体验的策略,大家在平时开发中,有意无意都会用到缓存,比如说 Android 开发的同学们,所有的图片框架,基本都有用到缓存技术,服务端那就完全不用说了。
说说通用的缓存策略,有两种,下面来点图,这个是我司内部分享的图,我盗用下
第一种方案,客户端使用的比较多,缓存和 DB(或者文件)同步更新,服务端一般都是用第二种方案,现在服务端的一些框架已经比较成熟了,像 spring 的@Cachable 注解,就搞定了很多事情,客户端的缓存相对来说简单一些,这期重点来说说服务端的缓存应用,再确定一点,我们来说说 Redis 这个有趣的东西。
为什么要用Redis举例呢,因为我认为Redis服务是缓存框架的集大成者,除了一般的内存缓存外,还可以缓存持久化,做任务队列等。我就来说说Redis的几种典型用法吧
传统的key-value存储,这个就不用说了吧,所有缓存框架必备的功能
hash功能,在传统kv之外,提供了一个类似hashmap的对应关系,一个key可以对应许多hashkey和value,比如存储商品以及购买人的数量上,key为商品id,hashkey为购买人的userID,value为购买的数量
list功能,和Java的List类似,push(key,List)这样,某个key对应一个队列,可以存储List数据,这种用法可以用来做简单的任务队列,需要加数据时就push到队列里面,然后消费者用一个1秒的定时任务,去这个队列里面取东西(这个只是简单的任务队列做法,Redis还提供了一种即时的回调,监听机制的消息队列做法,更专业点)
Set功能,和Java的Set类似,用法和上面一样,唯一不同的就是数据是不能重复的
Sorted Set,也就是zset,member/score功能,member是成员,socre是得分,这种结构通常用于排行榜,member为userID,score为得分,比如说100分,99分这样,用这种数据结构可以根据score来自动排序
最后一点就是批量操作啦,常用的有批量和管道,批量操作可以看做是对同一个数据格式的批量操作,比如设置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相关推荐
- java 分布式 redis缓存技术_JAVA架构师系列课程分布式缓存技术Redis权威指南,资源教程下载...
课程名称 JAVA架构师系列课程分布式缓存技术Redis权威指南,资源教程下载 课程目标 本课程从0基础开始,对redis的方方面面进行细粒度的讲解:包括基础操作.高级命令.各种集群模式.动态增减节点 ...
- 缓存层redis总结
缓存层redis总结 - 醉魔君 - 博客园 redis - 标签 - renpingsheng - 博客园
- 技术解读丨分布式缓存数据库Redis大KEY问题定位及优化建议
摘要:如何定位分布式缓存数据库Redis大KEY问题,实操案例带你掌握优化方法. [背景] 访问Redis 5.0 cluster集群出现OOM报错,报错信息为(error) OOM command ...
- 构建高性能数据库缓存之redis主从复制
一.什么是redis主从复制? 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制 ...
- 高性能网站架构之缓存篇—Redis集群搭建
看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...
- Spring Boot缓存实战 Redis
Spring boot默认使用的是SimpleCacheConfiguration,即使用ConcurrentMapCacheManager来实现缓存.但是要切换到其他缓存实现也很简单.下面是使用re ...
- 新课发布-SpringBoot2.0缓存中间件Redis技术入门与实战(抢红包系统设计与实战)
概要介绍:历经半个多月的时间,Debug呕心沥血.亲自录制的 "缓存中间件Redis技术入门与应用场景实战(SpringBoot2.x + 抢红包系统设计与实战)"的新课终于完成了 ...
- Shiro的缓存交给redis管理
Shiro的缓存交给redis管理 标签(空格分隔):Shiro redis 前言: 以下方式只是单机版的redis使用 一.导入Shiro和redis的jar jedis-2.7.3.jarshir ...
- oracle缓存和Redis,说说数据缓存那点事:Redis和memcached对比
[此为"一森咖记"公众号--第86篇文章] 本文预计阅读15分钟 [引言] 当我们为一个并发量较大的应用做数据架构时,会考虑使用缓存,意欲达到三个目标: 1. 加快用户访问速度,提 ...
- springboot:缓存不止redis,学会使用本地缓存ehcache
0. 引言 随着redis的普及,更多的同学对redis分布式缓存更加熟悉,但在一些实际场景中,其实并不需要用到redis,使用更加简单的本地缓存即可实现我们的缓存需求. 今天,我们一起来看看本地缓存 ...
最新文章
- Oracle分页存储过程
- zynq上NEON进行fft
- Android表格布局(Table Layout)
- 【BZOJ】 3238: [Ahoi2013]差异
- 【转帖】Reporting Service rdl报表,在aspx页面显示一张完整的RDL报表
- LeetCode 第 19 场双周赛(231 / 1120,前20.6%)
- 《浪潮之巅》完全系类——IT人士必读经典
- 程序设计中的一些感悟
- mockjs的介绍、基本使用和封装
- go学习笔记-运算符
- Windows SharePoint Services Search和Office SharePoint Server Search的区别
- 三星emcp型号详解_eMCP终将成为过去式?解析:三星、美光所推出的uMCP为何物?...
- python 对比文件内容差异_Python-文件差异对比
- SiamFC代码讲解,训练过程讲解
- Windows下最快的磁盘空间分析软件——WizTree
- java安装报错循环冗余检查_Java中循环冗余校验的实现方式介绍
- 海康ISAPI透传ftp
- 最受DBA欢迎的数据库技术文档-巡检篇
- 【智能卡】智能卡之ISO7816
- 如何查看Win11的CUDA版本