Redis介绍与使用

目录

一、什么是Redis

二、Redis特点

三、为什么使用Redis

四、Linux中安装Redis

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

2.复制 redis.conf 文件到/opt/redis/conf

3.拉取镜像

4.安装命令

5.Redis客户端启动命令

五、Redis中的五种数据类型

1.String(字符串)

2.Hash(哈希)

3.List(列表)

4.Set(集合)

5.zset(sorted set:有序集合)

六、设置失效时间


一、什么是Redis

        Redis 是一个开源的,使用 C 语言编写的,支持网络交互的,内存中的 Key-Value 数据结构存储系统,支持多种语言,它可以用作数据库、缓存和消息中间件。是一个高性能的,键值对的,将数据存储在内存中的非关系型数据库(nosql数据库 not only sql)。

二、Redis特点

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

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

        商品id:{id:1000,name:“华为手机”,price:3000}

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

        Redis 将数据存储在内存中,也支持数据的持久化,可以将内存中的数据保持 在磁盘中,重启的时候可以再次加载进行使用。

        性能极高 , Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。

        Redis 供 list,set,zset,hash 等数据结构的存储。

        原子–Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

        Redis 分布式集群化扩展性极,高即 master-slave(主-从)模式

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

三、为什么使用Redis

        随着 web3.0 的时代到来,传统的关系型数据库在大量的访问压力出现了一些 性能问题,如连接数量问题,IO瓶颈问题等,此时需要使用redis对部分数据进行缓 存,或者将某些数据直接存储在 redis 中,以减少对关系型数据库的访问压力. 当然 redis 数据库也是不能完全替代关系型数据库的,他们是相互依赖的.

        在对点击量高或者长期不需要更改的数据的保存,就可以使用Redis进行存储

四、Linux中安装Redis

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

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

        2.复制 redis.conf 文件到/opt/redis/conf

        注:文件在这里!

        链接: https://pan.baidu.com/s/1Q5pB1cRVkdlVz_Wuyl51uA?pwd=conf 提取码: conf 

        3.拉取镜像

docker pull redis:6.0

        4.安装命令

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

        5.Redis客户端启动命令

redis-cli

        注:中间没有空格

五、Redis中的五种数据类型

        1.String(字符串)

最常用的

场景:单值存储,存储一个字符的值,name age,json字符串,验证码

​	set key value

​	get key

​	del key

​	keys *

​	incr key	让值自增1,要求值为整数

​	decr key	让值自减1

        2.Hash(哈希)

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

hset key 属性名1 属性值1

hset key 属性名2 属性值2

hget key 属性名

hdel key 属性名

hlen key	返回属性值的数量

hgetall key	返回所有的属性值

        3.List(列表)

lpush key value

rpush key value

lpop key

rpop key

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

        4.Set(集合)

sadd key value1 value2

srem key value

smembers key	查看集合中所有元素

scard key	查看集合中元素个数

        5.zset(sorted set:有序集合)

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 键 时间(毫秒)

七、springboot连接Redis

        Redis官方提供了一个jedis的客户端类,连接Redis数据库 new jedis(“ip”,“端口”)。set(key,value)

        现在使用spring中封装RedisTemplate类实现java程序和Redis的连接操作

        1.添加 redis 依赖

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

        2. 配置连接 redis

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

        3. 注入 RedisTemplate

@Autowired
RedisTemplate redisTemplate;

        4.序列化

因为从springboot中将数据存到Redis时,数据会变成二进制形式,因此我们要对键和值进行序列化,所以需要被 Redis 缓存的类,必须实现序列化接口,以字符串形式存储,不以原本的二进制形式存储。

redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<User>(User.class));

相关推荐

  1. 什么是Redis?|介绍使用及特点浅记

    2024-07-16 09:30:02       23 阅读
  2. Redis 简介使用

    2024-07-16 09:30:02       41 阅读
  3. NPM介绍使用

    2024-07-16 09:30:02       51 阅读
  4. Docker介绍使用

    2024-07-16 09:30:02       44 阅读

最近更新

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

    2024-07-16 09:30:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 09:30:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 09:30:02       58 阅读
  4. Python语言-面向对象

    2024-07-16 09:30:02       69 阅读

热门阅读

  1. 【精简版】jQuery 中的 Ajax 详解

    2024-07-16 09:30:02       24 阅读
  2. 力扣 144题 二叉树的前序遍历 记录

    2024-07-16 09:30:02       24 阅读
  3. ref 和 reactive 区别

    2024-07-16 09:30:02       24 阅读
  4. vue + TinyMCE实现富文本编辑器

    2024-07-16 09:30:02       24 阅读
  5. 如何在本网站中显示所有Logistic回归超参数

    2024-07-16 09:30:02       24 阅读
  6. NIO(NO-Blocking I/O)模型

    2024-07-16 09:30:02       23 阅读
  7. 等保2.0 测评 linux服务器加固 基本安全配置手册

    2024-07-16 09:30:02       27 阅读
  8. PolarDB MySQL与RDS以及社区MySQL有什么区别?

    2024-07-16 09:30:02       21 阅读
  9. Memcached开发(二):安装与配置

    2024-07-16 09:30:02       21 阅读
  10. mysql第八天

    2024-07-16 09:30:02       23 阅读