Redis
什么是Redis
- 也是一个款数据库,MySql存储是存储到硬盘中,但是Redis是存储到内存中
- 读取块,但是数据不安全
应用场景
- 热点数据,或经常查询的数据,一般放在redis中
NOSQL
- 不仅仅是数据库,指的就是非关系型数据库,它是关系型数据库的有益补充。最终的数据还是存储在关系型数据库中。用于提升查询的速度,一般是用来做缓存使用,虽然也是数据库,但是对数据格式没有要求
服务器
- 服务启动(端口)
redis-server --port 6379
# 指定配置文件启动
redis-server.exe 配置文件名
- 客户端连接
# -h ip地址 -p 端口号
redis-cli [-h ip -p port]
- 配置文件启动
- 作用:将所有的配置写到配置文件中然后在启动
- daemonize: 可以设置redis后台启动
- dir:配置数据目录
# 后台启动
daemonize yes
port 6379
# ip地址
bind 127.0.0.1
# 日志存放路径
dir ./data
# 日志的文件名
logfile "logfile.log"
数据类型
String
命令 | 作用 |
---|---|
set 建 值 | 如果键不存在就添加,存在就修改 |
mset key1 value1 key2 value2 | 添加多个 |
setnx key value | 如果不存在就添加,存在不做任何操作 |
append key value | 在之前的键上增加内容 |
strlen key | 获取字符串长度 |
get key | 获取key对应的value |
list
数据结构
是一个双向链表格式,可以从左边添加也可以从右边添加,同理也可以从左边删除,也能从右边删除
常用命令
命令 | 作用 |
---|---|
lpush key value | 从左边开始添加 |
rpush key value | 从右边开始添加 |
lpop key | 删除最左边的一个 |
rpop key | 删除最右边的一个 |
lrange key 开始位置 结束位置 | 获取部分数据开始位置一般是 0 结束位置一般是-1查询全部 |
lindex listkey index(索引) | 查询索引位置的值 |
llen key | 得到list类型的长度 |
图解
Set
数据结构
- 不容许有重复的key
- 相当于将hash中的fieldkey拿来当做value
常用命令
命令 | 作用 |
---|---|
sadd key value1 value2… | 添加数据 |
srem key value1 value2 | 删除数据 |
smembers key | 查询所有的数据 |
sismember key value | 查询某一个数据是否存在 |
scard | 查看有多少个数据 |
hash
存储的数据结构
hash<String,Map<String ,String>>
命令 | 作用 |
---|---|
hset key fieldkey value | 添加数据 |
hmset key fieldkey value fieldkey1 value1… | 添加多个数据 |
hget key fieldkey | 获取数据 |
hmget key fieldkey1 fieldkey2 | 获取多个数据 |
hdel key fieldkey | 删除fieldkey对应的数据 |
key 相关的命令
命令 | 作用 |
---|---|
del key | 删除可以对应的value |
expire key time | 设置一个key能存活多久时间单位秒 |
ttl key | 查看一个key还能存活多久 |
keys * | 查看所有的key |
type key | 查看key对应的数据类型 |
DB指令
命令 | 作用 |
---|---|
select 数据库编号 (select 1->表示切换到到db(1)数据库) | 切换数据库 |
flushdb | 删除当前数据库所有的内容 |
flushall | 删除全部数据库的所有内容 |
JEdis的使用步骤
-
导包
jedis-3.1.0.jar
-
获取链接
Jedis jedis=new Jedis("ip地址",端口号);
-
使用
方法和命令一样
Redis持久化
- 目的:防止数据丢失对数据进行备份(磁盘)
- 实现方式:
- 直接拷贝内存中的数据保存到磁盘(RDB)
- 保存操作过程(AOF)
RDB
-
手动备份 直接执行save指令(了解)
执行原理:
因为redis是单线程的程序,是队列模式进行保存,如果当中途某一个数据比较大,会让后续任务等待。
-
basave(background save)
- savae指令执行时会祖册redis的进程
- bgsave会创建子子进程去执行备份操作,不会阻塞后续任务
-
配置频率
- save 秒 次数 -> 当key在指定的秒数内key达到了指定的次数就备份
- 底层任然使用的bgsave指令
daemonize yes port 6379 bind 127.0.0.1 dir ./data # 日志路径 logfile "logfile.log" # 备份路径 dbfilename "mydump.rdb" # 指定时间和指定key的改变次数进行备份 save 10 2
AOF(记录日志)
- 使用步骤
- 修改配置文件
- appendonly yes
- appdenfilename “append.aof”
- appendfsync everysec
AOF的重写机制
- 目的:去掉没有意义的指令记录
- 实现方式:
- 手动:bgrewriteaof,压缩aof文件
AOF(记录日志)
- 使用步骤
- 修改配置文件
- appendonly yes
- appdenfilename “append.aof”
- appendfsync everysec
AOF的重写机制
- 目的:去掉没有意义的指令记录
- 实现方式:
- 手动:bgrewriteaof,压缩aof文件