目录
2.复制 redis.conf 文件到/opt/redis/conf
一、什么是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));