Redis学习及总结

Redis 快速入门

Redis属于非关系型数据库
SQL应用场景

  1. 数据结构固定
  2. 相关业务对数据安全性一致性要求高

NoSQL应用场景

  1. 数据结构不固定
  2. 对一致性,安全性要求不高
  3. 性能要求高

🎯需要使用Xftp 传输压缩包到虚拟机上

安装好Redis后,
执行命令redis-server选择一个特定的执行目录,日志、持久化文件等都会保存在这个目录里面

将redis在后台运行
修改redis配置文件 redis.conf
(在正常模式输入 /想要查找的配置)

监听地址:bind 0.0.0.0
守护进程:daemonize yes
密码:设置后访问Redis必须输入密码
requirepass:123321

其他的配置

数据库数量默认有16个库,编号是0-15
database:1 代表只使用一个库

设置Redis能够使用的最大内存
maxmemory 512mb

日志文件,默认为空,不记录日志,可以指定日志文件名
logfile “redis.log”

在安装目录下,执行
redis-server redis.conf

查看是否启动成功
ps -ef | gref redis

杀死进程
kill -9 进程号

为了开启redis方便
开机自启
创建一个新文件

vi /etc/systemd/system/redis.service

添加内容:
image.png
内容如下:
[unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-7.2.4/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重载系统服务:

systemctl daemon-reload
此时redis正在被我们的系统管理

启动redis:

systemctl start redis

查看状态:

systemctl status redis

停止redis:

systemctl stop redis

重启redis:

systemctl restart redis

启动开机自启:

systemctl enable redis

redis客户端

位置 /usr/local/bin
redis命令行客户端
在我们安装redis 的时候已经安装了 redis-cli
启动:

redis-cli [option] [commonds]

常见的option

  1. -h redis连接的IP地址 127.0.0.1 不输入默认是本机地址
  2. -p 6379 :指定端口,不输入默认是6379
  3. -a 123321 : 指定密码

进入客户端不输入密码
使用命令输入密码

AUTH 123321

连接成功
输入ping 响应PONG 表示连接成功

默认使用的库是db0
可以简单的设置
set name john
set age 21
get name
get age

切换库 :select 库序号(0-15)

redis常见命令

基本类型:
String
Hash
List
Set
SortedSet
特殊类型:后面讲
GEO
BitMap
Hyperlog

官方文档: https://redis.io/
image.png
命令行方式查看通用命令文档
进入redis命令行客户端
help @generic

通用命令

常见命令 当个命令的使用范围是在一个库里面
KEYS 查看符合模板的所有key;不能在生产环境下使用,底层使用模糊查询,会导致redis阻塞
DEL 删除一个指定的key,可以一起删除多个key,删除成功返回对应删除的个数
EXISTS 判断key是否存在,可以批量查看;存在返回值大于0,不存在返回0
EXPIRE 给对应key添加过期时间,单位是秒
TTL 查看对应的key剩余的存在时间,返回值为-2表示已经不存在,返回值为大于0,表示仍然存在大于0秒的时间
image.png
image.png
当我们没有给键 设置过期时间,这个键就是永久的,使用ttl查看返回-1,表示的就是永久

数据结构

由于我的虚拟机不是使用超级管理员root登录的,而是自己创建的账号redis
进入超级管理员的命令是 su - 并且输入密码即可

全部可以通过帮助文档找到 help @string

String类型

string 类型的数据结构底层都是 字节数组
字符串类型的最大空间不能超过512m

string类型中,为了存储空间的容量,格式还分为string,integer,float
string是正常的字符串类型
integer和float是数值类型,数值类型有自增自减的功能

string类型的常用的命令:

  1. set:如果key存在,则是修改的功能
  2. get:获取
  3. mset:批量添加或者修改 k1 v1 k2 v2
  4. mget:批量获取
  5. incr:数值类型比如int,让一个整型key 自增1
  6. incrby:数值类型让一个整型的key 指定自增的值;实现自减,指定的值为负数即可
  7. incrbyfloat:浮点类型的数据进行 自增的操作,每次定义自增的步长
  8. setnx:相比于set不存在相同的数据,真正表示新增,如果key存在,不生效
  9. setex:新增并且添加有效期 参数:key seconds value

redis 操作的都是对key 进行操作,进而影响到value

key的层级格式

⭐问题:redis没有mysql表的概念,所有当我们进行不能数据的存储的时候,可能会出现冲突,比如id冲突
解决的方法
在redis中,key可以进行层级的命名 []:[]:[]
比如 公司:组名:键;或者是 【项目名】:【业务名】:【类型】:【id】
就可以实现分层次,不会产生冲突
image.png
key
user:name:1
value
{
“name”:“ylx”,
“age”:“21”
}
value 对于Java对象来说,可以将对象json化之后,就可以存储到redis中
image.png

hash类型

优点:对比string 如果values要进行修改,可以单独对value中其中一个field进行修改,而string没有办法进行对value中的值进行当个修改,更加灵活。
常见命令
image.png
hset 和 hmset 用法一致
image.png

image.png
总结:

  1. hset 命令和hmset 命令一样,可以为单个Key 批量添加多个 field和value
  2. hget 命令和 hmget命令则不是一样的,hget只能获取到一个字段,hmget可以批量获得
  3. hgetall 获取field和value;hkeys 获取field; hvals 获取value
  4. hsetnx 添加一个key 的 field字段,前提是这个field字段不存在,否则添加不成功

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云来喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值