redis入门

一、redis安装

 redis-4.0.0为linux系统    x64为windows      

安装windows包,首先启动redis

1、在Redis-x64-3.2.100包下 输入 redis-server.exe redis.windows.conf 命令启动

 2、另在Redis-x64-3.2.100包下 输入redis-cli.exe -h localhost -p 6379 -a 123456登录      h为用户  p为端口号 a为密码

redis默认关闭密码,可以在下面包下的redis.windows.conf 下  按住ctrl+f 查找 pass   到requirepass  123456为密码

        

 登录之后

 3、下面客户端redis   输入在服务器创建的地址,端口,密码 连接名称直接随便设置   得到右边就说明连接成功了

   

 二、redis常用数据类型

string    hash    list    set    sortset

 常用命令:

1、字符串shtring

setex  key seconds value : seconds为时间秒 一般用于短信验证

setnx key value  : 只有在key不存在的时候才创建key和value值

 

2、哈希 hash     里面的key为set集合的不可重复 , value为list 可以重复  

 

3、 list列表  有序 可重复

注意: lpush 是在list列表头部插入元素值  

4、set集合 无序 不可重复

 sinter key01... 交集

sunion key01 ... 并集

 

5、sorted set有序集合

 有序的 ,不重复

因为是有序的 这里用了同list一样的 zrange key start stop 来返回有序指定区间

 6、通用命令

三、在java中使用redis

这里使用 spring date redis

 编写配置类,创建RedisTemplate

 通过RedisTemplate 操作Redis

在test测试类下:

 

 四、在苍穹外卖项目中添加redis

 

1、看api

{1} 通过前端传过来的status来 设置

{2}获取status 来执行

 

 2、我们这里直接通过spring date redis来操作,不通过mysql执行

所以我们这里不需要经过service和mapper 层

{1} 设置店铺营业状态

  在redis中设置

{2}用户端admin获取店铺状态  在redis中获取

{3}用户端 user 获取店铺状态 这里是直接复制的客户端代码 为了在bean中不重复这里 设置 @RestController("userShopController")

 

五、缓存菜品,套餐

原由:在用户端中,我们每次访问菜品,套餐一次,就要去数据库访问一次,如果用户数很多,性能就会降低,这时候就需要用到缓存

1、缓存菜品

流程图:

 在菜品controller中:

遇到的问题:Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.

 需要条件依赖:

<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.13.5</version>
</dependency>
在LocalDateTime实体类上添加
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)

 

思考:如果增加,修改,删除了菜品,缓存是不是也要重新定义

这里我们需要在服务端的DishController中定义

分别在增加,修改,删除的controller中 来清除redis中的数据

    其中这里批量删除,修改,停售中是清除所有的redis的key中的数据

 

 六、 redis框架 spring cache

    通过注解开发 

redis的key为 userCache::id的值     例:右图

       

 如果写allEntries表示执行所有的,这里就是删除所有的key

 

posted @ 2023-08-29 19:39  阿朱朱  阅读(56)  评论(0编辑  收藏  举报