目录

redis

redis

一.redis是什么

redis是一个 开源 的,将数据存储到 内存中 的 key-value结构 的存储数据的一款非关系型数据库。

redis可以用来当作 数据库 (存储一些简单的数据,例如新闻点赞数量), 缓存 (秒杀时商品数量信息), 消息中间件

Redis 产品有以下特点

  1. 可以将数据存储到内存中,也可以将数据持久化到硬盘上
  2. 性能极高
  3. 提供了丰富的数据结构存储数据
  • Redis将数据存储在内存中,也支持数据的持久化,可以将内存中的数据保持 在磁盘中,重启的时候可以再次加载进行使用。
  • 性能极高, Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • Redis供list,set,zset,hash 等数据结构的存储。
  • 原子– Redis的所有操作都是原子性的,同时Redis还支持对几个操作全 并后的原子性执行。
  • Redis分布式集群化扩展性极,高即master-slave(主-从)模式。

https://i-blog.csdnimg.cn/direct/0882cc84a6754990a8fc52ce9749a4b7.png

二.为什么使用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:有序集合)

https://i-blog.csdnimg.cn/direct/4410fc25a1c5478ab5abd421730807e2.png

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  开始的位置,结束的位置

https://i-blog.csdnimg.cn/direct/4bae243e312b479c90515a4bd20324ba.png

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

https://i-blog.csdnimg.cn/direct/7b205c3166a445c88a083af48db033ce.png

3)注入RedisTemplate

@Autowired
 RedisTemplateredisTemplate;

4)测试