redis
redis
一.redis是什么
redis是一个 开源 的,将数据存储到 内存中 的 key-value结构 的存储数据的一款非关系型数据库。
redis可以用来当作 数据库 (存储一些简单的数据,例如新闻点赞数量), 缓存 (秒杀时商品数量信息), 消息中间件
。
Redis 产品有以下特点 :
- 可以将数据存储到内存中,也可以将数据持久化到硬盘上
- 性能极高
- 提供了丰富的数据结构存储数据
- Redis将数据存储在内存中,也支持数据的持久化,可以将内存中的数据保持 在磁盘中,重启的时候可以再次加载进行使用。
- 性能极高, Redis能读的速度是110000次/s,写的速度是81000次/s 。
- Redis供list,set,zset,hash 等数据结构的存储。
- 原子– Redis的所有操作都是原子性的,同时Redis还支持对几个操作全 并后的原子性执行。
- Redis分布式集群化扩展性极,高即master-slave(主-从)模式。
二.为什么使用redis
web1.0 2000年左右 网站数据都是静态(写死的)
web2.0 动态页面 数据动态展示,例如:新浪、腾讯(平台写信息,用户读信息)
web3.0 全民参加 例如:抖音、头条 (用户量很大)
大量用户连接数据库,数据库就会出现瓶颈(连接数量太多,IO时间),为了缓解关系数据库压力,可以将数据库暂时存储到redis中,甚至有些数据直接存储到redis中,从而实现对关系型数据库的保护。
注意:redis不是替代关系型数据库的。
三.Linux 下使用Docker安装redis
1.创建redis配置文件和数据映射(数据卷)
mkdir-p /opt/redis/conf
mkdir-p /opt/redis/data
2.安装命令
docker run -d -p 6379:6379 \
--name redis \
--restart=always \
--privileged=true \
-v /opt/redis/conf/:/etc/redis/conf \
-v /opt/redis/data:/data \
redis:6.0
四.redis 数据结构
5 种基本常用结构:
string(字符串),hash(哈希),list(列表),set(集合 ),zset(sorted set:有序集合)
redis中键都是字符串类型,五种数据结构指定的是值的结构。
1.string(字符串)
1)单值缓存
存一个具体的值,也可以存储一个Java中的对象,对象是被序列化成json格式的字符串。
set key value
get key
del key 删除键
keys * 查看所有的键
2)计数器
新闻点赞 (news_views是键)
set news_views:1 0 设置文章访问量
incr news_views:1 文章访问量+1 (键的值必须是整数)
decr news_views:1文章访问量-1
get news_views:1获得值
2.hash(哈希)
新闻点赞,新闻收藏
hset key field value 存储一个哈希表key的键值
hget key field 获取key对应的属性键值
hdel key field 删除key中的field键值
hlen key 返回key中的field的数量
hgetall key 返回key中所有的属性值
3.list(列表)
有序(添加顺序)的集合,可以存储重复元素
lpush key value 从左边(表头)向集合添加元素
rpush key val 从右边边向集合添加元素
lpop key 从头删除元素
rpop key 从未删除元素
lrange key 开始的位置,结束的位置
4.set(集合 )
无序不重复的集合。
sadd key val 添加
srem key val 删除指定key中的值
smembers key 查看指令key下的所有的值
scard key 查看key中的元素数量
5.zset(sorted set:有序集合)
有序(排序),元素不重复的集合。
zadd key 分数 值 – 添加
zrem key 值 – 删除
zscore key 值 – 返回值的分数
zcard key – 查看key中的元素数量
五.设置失效时间
set key val ex/px 时间 –ex秒/px毫秒
ttl 键 查看剩余时间(秒)
pttl 键 查看剩余时间(毫秒)
六.springBoot 集成使用redis
1.Java程序连接redis
1)使用官方提供的Jedis类实现连接
2)使用springboot对Jedis的封装实现
(1)管理连接redis对象,提供数据库连接池功能
(2)针对每种数据结构分别封装不同的实现类
(3)事务(跳过)
(4)提供了对键,值进行序列化、反序列化操作
2.具体搭建
1)添加redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2)配置连接redis
3)注入RedisTemplate
@Autowired
RedisTemplateredisTemplate;
4)测试