项目:一个网站的首页面访问量相对较大,且首页数据变化不是很频繁,所以把首页面的数据缓存到redis缓存中,减少数据库压力和提高访问速度。
redis是怎么用的?
用springboot整合,基于springboot的缓存注解做到的
- 缓存@Cacheable:根据方法对其返回结果进行缓存,下次请求时,如果缓存存在,则直接读取缓存数据返回,如果缓存不存在,则执行方法,并把返回的结果存入缓存中。一般用在查询方法上。
- 缓存@CachePut:使用该注解标志的方法,每次都会执行,并将结果存入指定的缓存中。其他方法可以直接从响应的缓存中读取缓存数据,而不需要再去查询数据库。一般用在新增方法上
- 缓存@CacheEvict(value = “banner”, allEntries = true):使用该注解标志的方法,会清空指定的缓存。一般用在更新或者删除方法上查看源码。
一般来讲,把经常进行查询,不经常修改,不是特别重要的数据放到redis作为缓存
1.Redis(Remote Dictionary Server远程字典服务)
可以作为分布式内存数据库
缓存
消息中间件MQ
- 基于key-value进行存储的
- 支持多种数据结构:String(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合)
- 支持持久化,通过内存进行存储的,也可以存到硬盘里面
- 集群
- 支持过期时间,支持事务
redis的默认端口号是6379。
Redis能干嘛?
- 内存存储、持久化,内存中是断电即失、所以说持久化很重要(rdb、aof)
- 效率高,可以用于告诉缓存
- 发布订阅系统
- 地图信息分析
- 计时器、计数器(浏览量!)
2、常用的redis服务命令
-
安装服务:redis-server --service-install
-
卸载服务:redis-server --service-uninstall
-
启动服务:redis-server --service-start
-
停止服务:redis-server --service-stop
进入redis的解压目录以后,输入:redis-server redis.windows.conf,启动redis服务
连上redis数据库操作:redis-cli.exe -h 127.0.0.1 -p 6379
关于redis键(key)的常用命令
- keys * :查看当前库所有key (匹配:keys *1)
- exists key 判断某个key是否存在
- type key 查看key是什么类型
- del key 删除指定的key数据
- unlink key根据value选择非阻塞删除(仅将keys 从keyspace原数据种删除,真正的删除会在后续异步操作)
- expire key 10 : 10秒后过期
- tll key :查看还有多少秒过期,-1表示永不过期,-2表示已经过期
- select 命令切换数据库
- dbsize查看当前数据库的key的数量
- flushdb清空当前库 (flushall: 清空所有数据库)
- set key value :创建一个key
- get key :查询对应的键值
- append key value:将给定的value追加到原值的末尾
- strlen key :获得值的长度
- sentnx key value 只有在key不存在时,设置key的值
- incr key :将key中储存的数字值增1,只能对数字值操作,如果为空,新增值为1(incrby k4 10:表示每次+10)
- decr key:将key中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1
###############################################
1. NoSQL
NoSQL: 泛指非关系型数据库,NoSQL不依赖业务逻辑方式存储,而以简单的key-value模式存储,因此大大的增加了数据库的扩展能力。
- 不遵循SQL标准。
- 不支持ACID。
- 远超于SQL的性能。
1.1 NoSQL的适用场景
- 对数据高并发的读写(秒杀功能)
- 海量数据的读写
- 对数据高可扩展性的
1.2 NoSQL不适用场景
- 需要事务支持
- 基于sql的结构化查询存储,处理复杂的关系,需要即席查询
作用
- 解决CPU及内存压力,一种缓存数据库,完全在内存种,速度快,数据结构简单
- 解决IO压力,缓存数据库,可以减少io的读操作