Redis

Redis是基于内存的key-value结构数据库

所以在Redis中操作需要制定一个key来填写对于value

  • 基于内存存储,读写性能高
  • 内存有限,所以不能因为读写性能高就把所有数据存储在Redis而不用Mysql
  • 存储热点数据(热点商品,咨询,新闻)
  • 企业应用广泛

启动服务端

1
redis-server.exe redis.windows.conf

启动客户端

1
redis-cli.exe
1
ping localhost:6379
1
exit

指定客户端连接哪个服务端

1
redis-cli.exe -h localhost -p 6379

切换数据库0开始15结束 共16个数据库

1
select 0

1.修改Redis配置文件

image-20240620124548692
  1. 设置修改密码

    1. 在配置文件中搜索requirepass

      1. 可以找到image-20240620124809971

      2. 因为Redis默认是没有密码的、#是注释 若需要加入密码,把#删除将foobared修改成对应密码即可

      3. 此时连接需要加入-a

        1
        redis-cli.exe -h localhost -p 6379 -a password

2.Redis图形化界面客户端

image-20240620125709121

3.Redis5种数据类型

  • 字符串 String 普通字符串,Redis中最简单常用的数据类型
  • 哈希 hash 散列,类似于Java中的HashMap (适合存储对象 变量 值)
  • 列表 list 按照插入顺序排序,可以有重复元素,类似Java中的LinkedList(有序,可重复,有索引)
  • 集合 set 无序集合,没有重复元素,类似Java中的HashSet(计算交集并集)
  • 有序集合 sorted set/zset 集合中每个元素关联一个分数(score),根据粉丝升序排序,没有重复元素(排行榜)

image-20240620143713880

4.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中的字段field的值设为value
    • HGGET key field 获取存储在哈希表中指定字段的值
    • HDEL key field 删除存储在哈希表中的指定字段
    • HKEYS key 获取哈希表中所有字段
    • HVALS key 获取哈希表中所有值
    • image-20240620212648392
  • 列表操作命令 list
    • LPUSH key value1 [value2] 将一个或多个值插入到列表头部
      • 按照顺序插入,所以1在最后
      • image-20240620213545756
    • RPUSH key value1 [value2] 将一个或多个值插入到列表尾部
    • LRANGE key start stop 获取列表指定范围内的元素
      • image-20240620213745933
    • PROP key 移除并获取列表内的元素
      • image-20240620213856296
    • LLEN key 获取列表长度
      • image-20240620213953374
  • 集合操作命令 set (不能有重复元素)
    • ASDD key member1 [member2] 向集合添加一个或多个成员
      • 按照先后顺序,先在前,后在后
      • image-20240620214659788
    • SMEMBERS key 返回集合中所有成员
      • image-20240620214709707
    • SCARD key 获取集合的成员数
      • image-20240620214740247
    • SINTER key1 [key2] 返回给定所有集合的交集
      • 已经设置 sadd set 1 2 3 4sadd set2 3 4 5所以交集为 3 4
      • image-20240620214930002
    • SUNION key1 [key2] 返回所有给定集合的并集
      • image-20240620215148992
      • 排除了多余的3和4
    • SREM key member1 [member2] 删除集合中一个或多个成员
  • 有序集合操作命令 zset
    • 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

5.在Java中操作Redis

  1. Redis的Java客户端

    • Redis的Java常用客户端
      • Jedis
      • Lettuce
      • Spring Data Redis(是Spring的一部分 对Redis底层开发包进行了高度封装 在Spring项目中可以使用Spring Data Redis来简化操作)
  2. Spring Data Redis使用

    • 操作步骤

      1. 导入Spring Data Redis的maven坐标

        1
        2
        3
        4
        5
        <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-redis</artifactId>
        <version>3.3.1</version>
        </dependency>
      2. 配置Redis数据源

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        spring:
        redis:
        host: localhost
        prot: 6379
        password: xxxxxx

        #忽略/
        redis:
        host: ${sky.redis.host}
        port: ${sky.redis.port}
        password: ${<PASSWORD>}
        database:
        jedis:
        pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
      3. 编写配置类,创建RedisTemplate对象

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        @Configuration
        @Slf4j
        public class RedisConfiguartion {

        @Bean
        public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("开始创建redis模板类");
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置key的序列化器,默认为JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
        }
        }
      4. 通过RedisTemplate对象操作Redis