Redis以及Spring-Cache的使用

redis简介:

  • Redis是一个高性能的key-value数据库。
  • Redis对数据的操作都是原子性的(数据的操作是不可分割的)

在这里插入图片描述

|数据类型
操作
stringhashlistsetzset
赋值SET key valueHSET key field valueLPUSH key v1
RPUSH key v2 v3
SADD key v1 v2 v2ZADD key score1 member1 [score2 member2]
取值GET key valueHGET key fieldLRANGE key 0 1SMEMBERS keyRANGE key start stop [WITHSCORES]
取多个值MGET k1 k2HGET key f1 f2
HGETALL car
LRANGE key 0 3nullnull
删除DEL keyHDEL key field~~SREM key v2 v3ZREM scoreboard key

redis数据类型以及方法:

String(字符串)

常用命令:set, get,setex, incr, incrby, desr, keys, append, strlen

  • 赋值和取值

    SET name “启明”
    GET name
    
  • 设置时间

    SETEX key seconds value // 键 多长时间后失效 值
    SETEX name 30 “启明”  	// name “启明” 30秒后失效(get获取不到了就)
    
  • 递增/递减 数字

    INCR num       //若键值不是整数时,则会提示错误。
    INCRBY num 2   //增加指定整数
    INCRBY num 2.7 //增加指定浮点数
    DESR num       //递减数字
    
  • 其他

    keys list*   	//列出匹配的key
    APPEND name "dai" 	//追加值
    STRLEN name    //获取字符串长度
    MSET name tyson gender male //同时设置多个值
    MGET name gender 	//同时获取多个值
    GETBIT name 0 	 //获取0索引处二进制位的值
    FLUSHDB 	//删除当前数据库所有的key
    FLUSHALL 	//删除所有数据库中的key
    
  • scan命令

    • 后续补充

hash(哈希)

常用命令:hset, hget, hmset, hmget, hgetall, hdel, hkeys, hvals

  • 在value里面又分为field和value。比较适合存储对象,包括属性和值。
  • 赋值和取值
    获取哈希表中全部field
    获取哈希表中全部value
    HSET car price 500   //格式:HSET key field value
    HSET car color blue
    HGET car price  // 获取值
    HMSET car price 500 color blue	//设置多个字段的值
    HMGET car price color 	// 获取多个字段的值
    HGETALL car		// 获取多个字段的值
    

list(列表)

常用命令:lpush, rpush, lpop, rpop, lrange, lrem

set(集合)

zset(sorted set 有序集合)

java中操作redis

  • Redis的Java客户端:Jedis、Lettuce、Redisson、Spring Data Redis。(所有的方法和Redis是一一对应的)
  • SpringData Redis是Spring的一部分,对Redis底层开发包进行了高度封装。在Spring项目中,可以使用Spring Data Redis来简化操作

1.导入Spring Data Redis的maven坐标

	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-data-redis</artifactId>
	</dependency>
	```

2.配置Redis数据源
```yml
	spring:
	  redis:
	    host: localhost
	    port: 6379
	    database: 0

3.编写配置类,创建RedisTemplate对象

  • config包下创建RedisConfiguration类,写入如下代码:

    @Configuration  // 声明为配置类
    @Slf4j
    public class RedisConfiguration {
        @Bean
        public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
            log.info("开始创建redis模板对象...");
            RedisTemplate redisTemplate = new RedisTemplate();
            //设置redis的连接工厂对象
            redisTemplate.setConnectionFactory(redisConnectionFactory);
            //设置redis key的序列化器
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            return redisTemplate;
        }
    }
    

4.通过RedisTemplate对象操作Redis

  • 通过依赖注入RedisTemplate
        @Autowired
        private RedisTemplate redisTemplate;
        // 方法里:赋值取值
        redisTemplate.opsForValue().set(key,value);
    	redisTemplate.opsForValue().get(KEY);
    

Spring Cache

  • SpringCache是Spring提供的缓存框架,提供了基于注解的缓存功能。
  • SpringCache提供了一层抽象,底层可以切换不同的缓存实现(只需要导入不同的Jar包即可),如EHCache,Caffeine,Redis。

关键注解:

  1. @EnableCaching:需要在Spring Boot项目的启动类上使用,来开启缓存支持
  2. @Cacheable:方法执行前先检查缓存中是否存在数据。如果存在,则直接返回缓存中的结果,不再执行实际的方法。如果不存在,则执行实际方法并将结果保存
    • 例:@Cacheable(value = “userCache”, key = “#user.id”)
    • 例:@Cacheable(cacheNames = “userCache”, key = “#reslt.id”)
      • 这里cacheNames或者value指定了缓存的名称,
      • key则定义了缓存的key,通常使用方法参数或返回结果来生成
  3. @CachePut:将方法返回值放回缓存中这意味着每次方法执行后,其结果都会被更新到缓存中。
    • 例:跟上边一样
  4. @CacheEvict:将一条或多条数据删除
    • 例:@CacheEvict(cacheNames = “keyCache”,allEntries = true)
      • 删除缓存名称为keyCache的所有数据
    • 例:@CacheEvict(cacheNames = “keyCache”,key=“#id”)
      • 删除key为id的数据
      • key的形式 keyCache::10

项目中使用:

  • 需要的依赖:
    	  // 这个是redis的 
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-redis</artifactId>
       </dependency>
       // 这个是cache需要的
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-cache</artifactId>
       </dependency>
    
  • yml里配置参数
      redis:
       host: 121.43.167.61
       port: 6379
       database: 1
    
  • 在启动类上加@EnableCaching
  • 方法上添加响应的注解
  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值