Redis学习

Redis

redis是基于key-valve的方式将热门数据存储在内存,访问性能高的数据库

  • redis服务端启动:redis-serve.exe redis.windows.conf
  • redis服务端关闭:ctrl+c
  • redis客户端连接本地:redis.cli.exe
  • redis客户端连接其他地方:redis.cli.exe -h host -p 6379 -a **** (密码) //-h 即host -p 即port 这里连的是本地的6379端口
  • redis客户端退出:exit
redis常用数据类型及命令
  • 字符串String

    SET key value 设置指定key的值

    GET key 获取指定key的值

    SETEX key seconds value 设置指定key的值,并将key的过期时间设为seconds

    SETNX key value 只有在key不存在时设置key的值

  • 哈希Hash

    HSET key field value 将哈希表key中的字段filed的值设为value

    HGET key field 获取存储在哈希表中指定字段的值

    HDEL key field 删除存储在哈希表中的指定字段

    HKEYS key 获取哈希表中所有字段field

    HVALS key 获取哈希表中所有值value

  • 列表list

    字符串列表,按照插入顺序排序

    LPUSH key value1 [value2] 将一个或多个值插入到列表左边(头部)

    LRANGE key start stop 获取列表指定范围内的元素(0头部 -1尾部)

    RPOP key 移除并获取列表最后一个元素

    LLEN key 获取列表长度

  • 集合Set

    string类型的无序集合,集合成员唯一,不重复

    SADD key member1 [member2] 向集合中添加一个或多个成员

    SMEMBERS key 返回集合中的所有成员

    SCARD key 获取集合的成员数

    SINTER key1 [key2] 返回给定所有集合的交集

    SUNION key1 [key2] 返回所有给定集合的并集

    SREM key member1 [member2] 删除集合中一个或多个成员

  • 有序集合Zset

    string类型元素的集合,不允许有重复元素,每个元素关联一个double类型的分数

    ZADD key score1 member1 [score2 member2] 向集合添加一个或多个成员

    ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间的成员及分数

    ZINCRBY key increment member 有序集合中对指定成员的分数加上增量increment

    ZREM key member [member] 移除有序集合中一个或多个成员

通用命令

不分数据类型,都可以使用的命令

KEYS pattern 查找所有符合给定模式(pattern)的key

EXISTS key 检查给定key是否存在

TYPE key 返回key所存储的值的类型

DEL key 该命令用于在key存在时删除key

Redis的java客户端

Spring Date Redis

  1. 导入Spring Date Redis的maven坐标

    <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    
  2. 配置Redis数据源

    redis:
        host: ${sky.redis.host}
        port: ${sky.redis.port}
        password: ${sky.redis.password}
    
  3. 编写配置类,创建RedisTemplate对象

    @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

    //以查询店铺营业状态为例
    public class ShopController {
        @Autowired
        private RedisTemplate redisTemplate;
    
        public static String key = "SHOP STATUS";
    
        /**
         * 查询店铺营业状态
         */
        @ApiOperation("查询店铺营业状态")
        @GetMapping("/status")
        public Result<Integer> getStatus() {
            Integer status = (Integer) redisTemplate.opsForValue().get(key);
            log.info("查询营业状态:{}", status == 1 ? "营业中" : "打烊中");
            return Result.success(status);
        }
    }
    

你可能感兴趣的:(苍穹外卖,redis,学习,数据库,java,后端)