redis笔记

redis:c语言开发,并发次10w+,性能高,基于内存(高贵),与cpu进行交互快,我们的mysql数据库是放在硬盘上的文件。

redis简介 他属于nosql数据库,非关系型数据库 没有外键 表的概念 k-v 与 k-v之间没有联系

redis应用:比较常用的是做缓存

redis在linux下的安装:

windos下直接解压开就行

linux下启动redis

知道redis.cli操作端

redis。server是启动用的

先启动 再操作

注意linux下的更改redis.conf文件 把它放到后台运行

在redis的conf配置文件下可以配置密码 端口 是否运行在后台等等

设置完密码就要在登录的时候加上-a password 或者进去之后再auth password

注意 默认情况下redis不允许远程访问 需要配置

小技巧:(在文件中查找关键字)

当你用vi打开一个文件后,因为文件太长,如何才能找到你所要查找的关键字呢?

在命令模式下敲斜杆( / )这时在状态栏(也就是屏幕左下脚)就出现了 “/” 然后输入你要查找的关键字敲回车就可以了。

如果你要继续查找此关键字,敲字符 n 就可以继续查找了,敲字符N向前搜索



把redis.conf中的127.0.0.0注释掉

测试一下:window客户端(cli)去访问redis的服务 发现成功连接

注意连接不成功注意一下防火墙 systemctl stop firewalld 关一下 或者开放指定的端口也行 这个端口看你配置文件了 默认是6379

Redsi的常用命令:

redis的key为string类型 value有下面5种数据结构的形式

对存储不同的value类型 我们有不同的命令

对于value为String类型 第三个常见应用是验证码的有效期

重复set 会刷新 除了setnx

这个1代表设置成功 0代表设置失败 这个重复设置是不刷新value的

setex key seconds values 就是key存活seconds秒

exist(存在)

setnx key value

对于value值为hash类型

脑子里有这张图:

hdel可以一次删除多个字段

列表:可以有重复元素

如图插入顺序:dcba

通过lpush key d c b a (每次插入在队头)

再通过lrange key 0 -1

得到顺序 a b c d

记住遍历的方向:从左->右 从刚插入到已插入 从队头插入

rpop key 显示的是d 同时把d移除掉 也就是返回并删除队尾

brpop key1 timeout

(b是阻塞)阻塞并删除,上面rpop的plus版

效果如下:如果队尾(很早之间添加的)有元素,删除

如果队尾没有元素,队为null的状态,阻塞自己timeout秒

集合:

无序集合 无法添加重复元素

1.无序 往set集合添加元素 重复的失败了

对于sdiff与写的集合顺序有关

对于sdiff hobby like

全体集合为hobby 去掉hobby与like相交的那部分

灵魂画手~

有序集合(根据score排):出现重复value,更新分数,遍历从小到大排(score)

redis常用命令:

不管什么类型,均可操作

ttl返回-1代表只要服务不关闭就一直存活

java操作Redis SpringdataRedis用的最多

用法简单

项目优化

缓存:

使用git实现版本控制

我们创建一个新的分支 在这个分支上进行开发 不影响主分支master的开发 开发完测试通过 合并到主分支上

redustemplate这个对象被做成bean是框架为我们做的

在我们添加redis依赖的时候 我们直接AutoWired就可以

当然如果你自己配置了这个bean(第三方@Bean管理)返回值为RedisTemplate的话

你的配置生效 注入的是你的bean

以你的为准


缓存验证码思路分析:

这个save方法和update方法 我们设置一个标志位默认0

如果修改或者保存修改为1,

如果reids中的数据不为null and 状态为0

查询

其他情况 要么数据为null 要么状态为1 要么即为null又为0

都要重新查询数据库

最后设置状态位为0

这个是我自己想的。。没有跟老师实现 功能测试成功,就用自己的了

可以支持多种缓存产品

常用注解:

对于没有引入缓存对应的包也就是。。。CacheManager,使用map集合来存储数据

只不过这个map在内存中,如果我们停止了服务器,缓存的数据就没有了

值得注意的是 key的构建是动态的 需要我们手动构建

value你可以理解为一个分类

获取返回值#result

获得形参 #形参名

一般查询我们用@Cacheable 先去查询缓存有对应key的value,如果有 直接返回 没有 就缓存其方法的返回值

但是如果方法返回值为空也会被缓存 所有加上condition 返回结果不为null的时候缓存返回结果

condition 满足条件缓存

unless 是满足条件不缓存 正好相反

注意:对应redis这种缓存,spring data redis 中 condition不支持#reslut 而unless支持#result

使用SpringCache操作redis缓存产品

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值