Redis概述
redis是一个开源的,将数据存储到内存中,key-value结构的存储数据的一款非关系型数据库。
redis作用:
redis可以用来当作
1、数据库(存储一些简单的数据列如新闻点赞数量),
2、缓存(秒杀的商品数量信息),
3、中间件(如:俩个Java项目连接一个redis)
redis特点:
1、可以将数据存储在内存中,也可以将数据持久化到硬盘上
2、性能高,redis能读的速度是110000次/秒,写的速度是80000次/秒
3、提供了丰富的数据结构存储数据
为什么使用redis?
web1.0 | 2000年左右,网站数据都是静态(写死的) |
web2.0 | 动态页面,数据动态显示,列如新浪、腾讯,平台发信息,用户看 |
web3.0 | 全民参与,如抖音 |
大量用户连接数据库,数据库就会出现瓶颈(连接数量太多,io时间长)为了减轻数据库的压力,有些数据就直接存储到redis中,从而实现对关系型数据库的保护。
注意:redis不是来代替数据库的
redis安装
创建配置文件和数据的映射(数据卷)
mkdir -p /opt/redis/conf
mkdir -p /opt/redis/data
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.0a
在虚拟机中进入redis
docker exec -it redis bash
redis数据结构
5中常用的数据结构:string(字符串)、hash(哈希)、list()、set、zset
键都是字符串结构没有数据结构,只有值有数据结构,5种数据结构指的是值
string:
单值存储(存一个具体值,也可以存储一个java中的对象,对象序列化成json格式的字符串)set key value、
get key、
del key删除键、
keys *查看所有的键
计数器:
新闻点赞:incr 键 (键的值必须是整数)自增1
decr 键 自减1
Hash:
新闻点赞、新闻收藏,
hset key 属性 值、如:hset user name:1 zhangsan
hget key 属性、hget user name:1
hdel key 属性删除某个属性
hlen key 返回键对应属性数量、
hgetall key 返回哈希表key中所有的键值对
list
有序的集合,里面可以重复存储
lpush key val 左边开始插入、
rpush key val 右边开始插入、
lpop key 从头删除、
rpop key 从右边开始删除、
lrange key 开始位置 结束位置(返回列表key中指定区间内的元素,区间以偏移量开始位置和结束位置)
Set
是无序集合,不能重复存储
sadd key val 添加、srem key val 删除key下的值、smembers key 查看指定key下所有的值、scard key 获取key下的元素个数
zset
有序(排序),不重复
zadd key 分数 值、
zrem key 值、
zscore key 值 返回值的分数、
zcard key 返回key中元素个数
设置失效时间
set key value ex/px 时间
只有string数据类型可以设置失效时间
Java程序连接redis
1、使用官方提供的Jedis类实现连接
2、使用springboot对jedis的封装实现
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、配置连接redis
redis:
host: 192.168.198.128 //
port: 6379
password: 123
database: 0
pool:
max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 8 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
timeout: 5000ms # 连接超时时间(毫秒)