Redis

目录

概述

Linux 下使用 Docker 安装 redis

Redis数据结构

1.String(字符串)

单值缓存

计数器

2.哈希结构

3.列表

4.set 无序 不重复

5.zset 可以排序的不重复元素集合

设置失效时间

设置值时可以设置有效时间

设置值后设置有效时间

java连接redis

搭建:

spring-data-redis 针对 jedis 提供了如下功能:

注入 RedisTemplate

测试


概述

Redis是一个高性能的,键值对的,将数据存储在内存中的非关系型数据库(nosql数据库 not only sql)

高性能:数据存储在内存中,直接访问内存

键值对: 新闻id(键):点赞数量(值)

                商品id(键):{id:1000,name:"华为手机",price:3000}

非关系型数据库:数据存储是键值对的,没有二维表关系,不使用sql操作

使用Redis作为缓存,将一些访问量大,或者修改较少的数据使用Redis存储起来,对mysql形成保护

Linux 下使用 Docker 安装 redis

创建 redis 配置文件和数据映射挂载卷

mkdir -p /opt/redis/conf
mkdir -p /opt/redis/data

复制 redis.conf 文件到/opt/redis/conf 目录下(注意,此文件已设置密码为 123)

在此redis.conf 文件的 789行 将密码设置为123

允许远程连接访问

拉取镜像

docker pull redis:6.0

安装命令

docker run -d -p 6379:6379 --name redis --restart=always --privileged=true \ 
-v /opt/redis/conf/redis.conf:/etc/redis/redis.conf -v /opt/redis/data:/data \
redis:6.0

进入到容器

docker exec -it redis bash

进入到Redis

redis-cli

Redis数据结构

5种基本常用结构

string(字符串) hash(哈希) list(列表) set(集合 ) zset(sorted set:有序集合)

1.String(字符串)

string 是 redis 最基本的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

单值缓存

        set key value

        get key

        del key

        keys *

单值缓存值可以为 json 字符串

计数器

       set news_views 0 设置文章访问量

        incr news_views 文章访问量+1 (值加1)

        decr news_views 文章访问量-1 (值减1)

        get news_views 获得值

2.哈希结构

        适合一个键存储多个属性值的场景 例如用户信息 新闻点赞,收藏信息

        hset key 属性名1 属性值1

        hset key 属性名2 属性值2

        hget key 属性名

        hdel key 属性名

        hlen key 返回属性值的数量

        hgetall key 返回所有的属性值

3.列表

        lpush key value

        rpush key value

        lpop key

        rpop key

lrange key 开始位置 结束位置 查询列表指定区间的元素

4.set 无序 不重复

        sadd key vzaddalue1 value2

        srem key value

        smembers key 查看集合中所有元素

        scard key 查看集合中元素的个数

5.zset 可以排序的不重复元素集合

        zadd key 分数 值

        zrem key 值

        zscore key 返回值的分数

        zcard key 查看集合中元素的个数

设置失效时间

有时候我们并不希望 redis 的 key 一直存在。例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁。

redis 提供了一些命令,能够让我们对 key 设置过期时间,并且让 key 过期之后被自动删除

设置值时可以设置有效时间

        EX 表示以秒为单位

        PX 表示以毫秒为单位

        EX,PX 不区分大小写

        set name jim EX 30 设置失效时间为 30 秒

        ttl 键 查看剩余时间(秒)

        pttl 键 查看剩余时间(毫秒)

设置值后设置有效时间

        expire 键 时间(秒)

        pexpire 键 时间(毫秒

java连接redis

        redis官方提供了一个jedis的客户端,连接redis数据库 new jedis("ip","端口").set(key,value)

现在使用Spring中封装RedisTemplate类实现Java程序

搭建:

        1.添加redis依赖

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

2.配置连接redis

redis:
  host: 192.168.247.128
  port: 6379
  password: 123
  database: 0
  pool:
    max-active: 8 #连接池最大连接数(使用负值表示没有限制)
    max-wait: -1ms #连接池最大阻塞等待时间(使用负值表示没有限制)
    max-idle: 8 #连接池中的最大空闲连接
    min-idle: 0 #连接池中的最小空闲连接
    timeout: 5000ms #连接超时时间(毫秒)

host:虚拟机IP或是云服务器的IP

spring-data-redis 针对 jedis 提供了如下功能:

  1. 连接池自动管理,提供了一个高度封装的“RedisTemplate”类.

  2. 针对 jedis 客户端中大量 api 进行了归类封装,将同一类型操作封装为 operation 接口.

    ValueOperations:简单 K-V 操作 SetOperations:set 类型数据操作 ZSetOperations:zset 类型数据操作 HashOperations:针对 map 类型的数据操作 ListOperations:针对 list 类型的数据操作

  3. 将事务操作封装,有容器控制。

  4. 针对数据的“序列化/反序列化”,提供了多种可选择策略(RedisSerializer) JdkSerializationRedisSerializer:POJO 对象的存取场景,使用 JDK 本身 序列化机制.

    StringRedisSerializer:Key 或者 value 为字符串的场景,根据指定的 charset 对数据的字节序列编码成 string,是“new String(bytes, charset)”和 “string.getBytes(charset)”的直接封装。是最轻量级和高效的策略。

    JacksonJsonRedisSerializer:jackson-json 工具提供了 javabean 与 json 之 间的转换能力,可以将 pojo 实例序列化成 json 格式存储在 redis 中,也可以将 json 格式的数据转换成 pojo 实例。

注入 RedisTemplate

@Autowired
RedisTemplate redisTemplate;

测试

redisTemplate.opsForValue().set("name", "aa");
redisTemplate.opsForValue().set("users", users,10*1000, TimeUnit.MILLISECONDS);
redisTemplate.hasKey("name");
redisTemplate.opsForValue().get("name");
redisTemplate.delete("users");
序列化键值
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<User>(User.class));
需要被 Redis 缓存的类,必须实现序列化接口

相关推荐

  1. <span style='color:red;'>Redis</span>

    Redis

    2024-07-22 14:28:04      55 阅读
  2. <span style='color:red;'>Redis</span>

    Redis

    2024-07-22 14:28:04      124 阅读
  3. <span style='color:red;'>Redis</span>

    Redis

    2024-07-22 14:28:04      38 阅读
  4. <span style='color:red;'>redis</span>

    redis

    2024-07-22 14:28:04      59 阅读
  5. <span style='color:red;'>Redis</span>

    Redis

    2024-07-22 14:28:04      49 阅读
  6. <span style='color:red;'>redis</span>

    redis

    2024-07-22 14:28:04      58 阅读
  7. <span style='color:red;'>Redis</span>

    Redis

    2024-07-22 14:28:04      54 阅读
  8. <span style='color:red;'>redis</span>

    redis

    2024-07-22 14:28:04      61 阅读
  9. Redis

    2024-07-22 14:28:04       52 阅读
  10. <span style='color:red;'>redis</span>

    redis

    2024-07-22 14:28:04      53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 14:28:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 14:28:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 14:28:04       45 阅读
  4. Python语言-面向对象

    2024-07-22 14:28:04       55 阅读

热门阅读

  1. Vue3升级了哪些重要的功能

    2024-07-22 14:28:04       20 阅读
  2. Vue的依赖注入:组件树中的共享数据与功能

    2024-07-22 14:28:04       16 阅读
  3. 常见的坐标系统

    2024-07-22 14:28:04       18 阅读
  4. 905. 按奇偶排序数组->双指针简单运用

    2024-07-22 14:28:04       13 阅读
  5. k8s部署kafka集群

    2024-07-22 14:28:04       17 阅读
  6. ThreadLocal的使用以及使用的场景

    2024-07-22 14:28:04       17 阅读
  7. 7.21 复习数据结构相关知识【主链表】

    2024-07-22 14:28:04       18 阅读
  8. LEFT JOIN RIGHT JOIN INNER JOIN JOIN如何理解这几个JOIN?

    2024-07-22 14:28:04       16 阅读
  9. Linux常用命令

    2024-07-22 14:28:04       15 阅读