Redis基础笔记
Redis介绍
官方网站:https://redis.io/ Redis是一种键值型的NoSql数据库,这里有两个关键字:
- 键值型:Redis中存储的数据都是以key、value对的形式存储
- NoSql:相对于传统关系型数据库而言,有很大差异的一种数据库。(not only sql,非关系型数据库)
NoSql则对数据库格式没有严格约束,往往形式松散,自由。 对比传统数据库:
关系型数据库(RDBMS)和非关系型数据库(NoSQL数据库)是两种不同类型的数据库管理系统,它们在数据存储、数据模型和适用场景等方面存在显著的区别。
- 数据模型:
- 关系型数据库:使用表格(表)来组织数据,数据之间的关系通过外键建立。数据存储在结构化表格中,每行代表一个记录,每列代表一个属性。
- 非关系型数据库:使用不同的数据模型,如文档、键值对、列族、图形等。这些数据库通常更自由灵活,不需要固定的模式,允许存储不同结构的数据。
- 查询语言:
- 关系型数据库:通常使用SQL(Structured Query Language)来查询和操作数据,支持复杂的查询和事务。
- 非关系型数据库:使用不同的查询语言或API,通常是根据数据库类型而变化的。有些NoSQL数据库支持查询,但通常不如SQL数据库灵活。
- 扩展性:
- 关系型数据库:通常采用垂直扩展(增加服务器性能)或水平分区 来提高性能,但有一定限制。
- 非关系型数据库:通常更容易水平扩展,可以更好地处理大规模数据。
- 一致性:
- 关系型数据库:强调ACID(原子性、一致性、隔离性和持久性)事务特性,确保数据的一致性和完整性。
- 非关系型数据库:一些NoSQL数据库可能牺牲ACID属性以获得更高的性能和可用性,而强调CAP(一致性、可用性和分区容忍性)理论。
- 适用场景:
- 关系型数据库:适用于需要强一致性和复杂事务处理的应用,如金融系统、ERP系统等。
- 非关系型数据库:适用于需要高度可扩展性和灵活性的应用,如大数据、社交媒体、物联网、日志存储等。
Macos安装Redis
https://redis.io/docs/getting-started/installation/install-redis-on-mac-os/
安装redis
brew install redis
查看安装信息:
brew info redis
前台启动redis:
redis-server
后台启动redis:
brew services start redis
查看信息:
brew services info redis
停止:
brew services stop redis
配置
打开/opt/homebrew/etc/redis.conf
配置文件
修改密码
requirepass 123456
前台启动的时候可以加 配置文件
cd /opt/homebrew/etc/
redis-server redis.conf
在后台启动redis,这个时候不需要加配置文件
brew services start redis
登录redis
redis-cli -h localhost -p 6379 -a 123456
启动问题
后台启动的时候报错:
解决办法:
cd /opt/homebrew/Library/Taps/homebrew
rm -rf homebrew-services
brew tap homebrew/services
客户端工具
可以选择 another redis desktop https://goanother.com/cn/#download
Redis中的数据结构
Redis是键值对结构,即key-value,我们需要保证key不冲突, 常见的方式为:
项目名:业务名:类型:id
例如:
- user相关的key:heima:user:1
- product相关的key:heima:product:1 如果Value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储:
字符串
String类型,也就是字符串类型,是Redis中最简单的存储类型。 String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便
KEY | VALUE |
---|---|
heima:user:1 | {"id":1, "name": "Jack", "age": 21} |
heima:product:1 | {"id":1, "name": "小米11", "price": 4999} |
常用命令
SET key value
:设置
GET key
:获取
SETEX key seconds value
:设置指定key过期时间,单位s
SETNX key vvalue
:只有在key不存在时才设置
哈希
Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:
常用命令
HSET key fiele value
将key设置为value
HGET key field
获取
HDEL key field
删除
HKEYS key
获取所有字段
HVALS key
获取所有值