C语言编写开源的、redis 基本内存的,可选持久性的键值对,以key-value值的方式存取数据。它的数据是存在内存中的。这是Redis速度快的主要原因。
一、redis的优点
1、基于内存,cpu不是redis的瓶颈、内存和网络带宽才是;cpu的速度大于内存、内存大于硬盘。
2、单线程、避免了cpu的上下文切换,损耗
3、IO多路复用
二、redis的缺点
三、redis的数据类型
四、redis的应用场景
1、经常会被查询、但是不怎么会被修改或者删除的数据,由于redis 的访问速度比较快,支持的数据类型比较丰富,优先是使用redis缓存
2、
NOSQL数据库、内存缓存、消息队列
Redis
Nosql 没有表 key-value 键值对
SQL 关系型数据库 数据库增删改查
NOsql 与 mysql的区别
mysql
1、结构化的数据,可以对表设置约束
2、关联的
3、sql 查询 --语法固定,只要是关系型数据库都可以用sql语句
4、事务ACID
5、存储方式磁盘
6、垂直
数据结构固定
相关业务对数据安全性一致性要求较高
NOsql
1、非结构化的数据
2、非关联的 JSON
3、非SQL查询
4、BASE 基本满足,无法全部满足ACID
5、内存
6、水平
数据结构不固定,经常要进行变更。
对一致性,安全性要求不高
对性能要求。
key | value
Document (文档行)
{}
Graph 图 没有严格的性能要求
Redis 诞生于2019年。
键值key-uale 支持多种不同数据结构,功能丰富
单线程,每个命令具备原子性
基于内存、IO多路复用
支持数据持久化;定期将内存持久化到磁盘
redis6.0 对网络请求的处理上是多线程,
在命令处理上,核心还是单线程。
支持主从集群,分片集群
支持多语言客户端。
redis.conf 配置
监听地址127.0.0.1 只能在本地访问,修改为0.0.0.0 可以在任意地址访问
bind
守护进程,修改为YES 后既可后台运行
daemonize yes
密码,设置后访问Redsi必须输入密码
requirepass 密码
https://github.com/lework/RedisDesktopManager-Windows/releases 下载客户端工具包
set name jack
set age 21
get age
get name
select 1 切换库
redis 默认有16个库
redis 数据结构
key一般是string类型 5种基本类型
1、string hello world
2、hash {name:"tianxia",age:22}
3、list [a->b->c-]
4、set A,B,C
5、sortedset {A:1,B:2,C:3}
1、String字符串的类型的常见命令
redis 通用命令 (key也是严格区分大小写)
help keys
keys a* 查询所有key
DEL 删除一个指定的key
EXISTS 判断key是否存在
EXPIPE 给一个key设置一个有效期,有效期到期时该key会被自动删除
TTL 查看一个key的有效期
MGET 获取key name的返回值
INCR:让一个整数自增1
INCRBY : 自减1
INCRBYFLOAT : 浮点数自增
SETNX : KEY 存在则不会创建、不存在才会创建。
key的结构
Redis的key允许有多个单词形成层级结构,多个单词用冒号隔开:
项目名:业务名:类型:id
set zhejiang:user:1
set zhejiang:user:2
set zhejiang:product:1
'{"id":1,"name":"jack","age":21}'
'{"id":2,"name":"ROse","age":23'
'{"id":1,"name":"小米11","price":4999}'
'{"id":2,"name":"荣耀6","price":2999}'
2、HASH类型,也叫散列
String结构是将对象序列化为JSON字符串存储,当需要修改某个字段时很不方便
HASH 结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD
HSET zhejiang:user:3 name Lucy
HSET zhejiang:user:3 age 17
HMSET zhejiang:user:4 name zhangsan age 40 sex man