当前位置: 首页 > article >正文

Redis基础篇(含redis在linux环境下的安装教程,以及用docker安装redis的教程)

Redis

Redis是什么

redis是一个高性能的,键值对的,将数据存储在内存中的非关系型数据库(nosql数据库 not only sql)

高性能的:数据存储在内存中,直接访问内存

键值对:新闻的id(建) : 点赞数量(值) 、商品id : {id:1000,name:“华为手机”,price:3000}

非关系型数据库:数据存储是键值对的,没有二维表关系 不使用sql操作

Redis的特征

键值(key-value)型,value支持多种不同数据结构,功能丰富

单线程,每个命令具备原子性

低延迟,速度快(基于内存*、IO多路复用、良好的编码)

支持数据持久化

支持主从集群、分片集群

支持多语言客户端

为什么要使用Redis

使用redis作为缓存,将一些访问量大,或者修改较少的数据使用redis存储起来,对mysql形成保护

什么是NoSQL数据库

SQL是关系形数据库;NoSQL非关系形数据库

sql和nosql的差异

在这里插入图片描述

sql中的数据都是结构化的数据并且可以互相关联,按照表的结构去存储数据,采用sql查询,满足ACID(事务)

nosql中的数据是非结构化的,数据之间无关联(程序员可以之间去构建联系),查询时类似java中的map,BASE(无法全部满足事务)

nosql比sql给适合扩展

在这里插入图片描述

(Document 为文档型 Graph 为图型)

Linux直接安装Redis

为什么用Linux服务器来安装Redis(Redis官方没用提供Windows版本的安装包,并且大多数企业都是基于Linux服务器来部署项目)

1.1安装Redis依赖

yum install -y gcc tcl

1.2上传安装包并解压

usr/local/src

进入redis目录

cd redis-版本号

运行编译命令

make && make install

默认的安装路径是在 /usr/local/bin 目录下

redis-cli:是redis提供的命令行客户端

redis-server:是redis的服务器端起动脚本

redis-sentinel:是redis的哨兵启动脚本

1.3默认启动

安装完后,任意目录输入redis-server命令即可启动Redis(一般不使用)

1.3.2指定配置启动

要让Redis以后台方式启动,必须修改Redis配置文件,就在redis安装包下(/usr/local/src/redis-6.2.6),名字叫redis.conf
在这里插入图片描述

1.3.3开机自启动

在这里插入图片描述
在这里插入图片描述

2.Redis安装(Linux下使用Docker安装)

1.创建 redis 配置文件和数据映射挂载卷

mkdir -p /opt/redis/conf
mkdir -p /opt/redis/data

2.复制 redis.conf 文件到/opt/redis/conf 目录下(注意,此文件已设置密码为 123)

3.拉取镜像

docker pull redis:6.0

4.安装命令

docker run -d -p 6379:6379 \ 
--name redis \ 
--restart=always \ 
--privileged=true \ 
-v /opt/redis/conf/redis.conf:/etc/redis/redis.conf \ 
-v /opt/redis/data:/data \
redis:6.0

用docker进入reids的指令

docker exec -it redis redis-cli

Redis通用命令

HELP: 查看所有指令

help string(查询string类型的指令)
help keys(查询keys指令的用法)

KEYS: 查看所有符合模板的key,不建议在生产环境设备上使用(redis是单线程的执行命令的在执行完这个命令前其他命令会阻塞)

keys 模板(*表示全部,c*就表示开头为c的全部)

DEL: 删除一个key

del key(可以批量删除)

EXISTS: 判断key是否存在

exists key

EXPIRE: 给key设置一个有效期,到时间自动删除

expire key 20(默认为秒)

TTL: 查看一个key的剩余时间

ttl key

Redis 数据结构

redis中数据存储是键值对的,建是字符串类型,值有5种数据类型

string(字符串)

最常用的

场景:单值存储 存储一个字符的值 name age json字符串 验证码 计算器

set key value
//创建一个键值对
get key
//获取该key的值
del key
//删除这个键值对
keys *
//查看所有键值对
incr key
//让这个键对应的值自增1
decr k
//让这个建对应的值自减1
incrby key 2
//让这个键对应的值自增2
incrbyfloat key 0.5
//让这个键对应的值自增0.5
setnx key value
//不存在新增key 存在就不执行
setex key 有效期
//新增key并设置有效期

在这里插入图片描述

hash(哈希)

hash适合一个键存储多个属性值的场景

例如用户信息 新闻点赞,收藏信息

hset key field value
//e.g. hset news 1:dz 20
//存储一个哈希表key的键值
hmset key field1 value1 field2 value2
//一次存储多条
hget key field
//获取值
hgetall
//获取hash类型的key中的所有field和value
hdel key field
//删除
hlen key
//返回属性值的数量
hincrby key field 1
//让指定属性增加1
hsetnx key field value
//当key不存在是新增key,存在时不执行
list(列表)

与java中的linkedlist类似,可以看做一个双向结构的链表

在这里插入图片描述

lpush key value
//从左边存
rpush key value
//从右边存
lpop key
//从头取出
rpop key
//从末尾取出
lrang key start stop 
//查看指定范围的值
blpop key 100 (如果没用这个key等待100s,如果有或者100s内这个key存在了则从左侧出)
brpop key 100
set

在这里插入图片描述

无序不重复

sadd key value1 value2
//添加元素的值可以一次性增加一个或多个
srem key value
//删除元素的值
smembers key 
//查看集合中所有元素
scard key
//查看集合中元素个数
sismember key member
//判断一个元素是否存在于set中
sinter key1 key2
//求key1和key2的交集
sdiff key1 key2
//求key1和key2的差集(key1和key2的差集就是key1有key2没有的元素)
sunion key1 key2 
//求key1和key2的并集(所有两个集合的元素)
zset(有序set)

在这里插入图片描述

可以排序的 不重复元素集合

在这里插入图片描述

zadd key 分数 值
//添加元素的值
zrem key 值
//删除元素的值
zscore key 值
//返回值的分数
zcard key
//查看集合中的元素

http://www.kler.cn/news/355447.html

相关文章:

  • 【Linux驱动开发】嵌入式Linux驱动开发基本步骤,字符设备开发入门,点亮LED
  • Python知识梳理总结思维导图
  • SpringBoot实现的物流优化策略
  • 笔记整理—linux网络部分(2)Linux网络框架
  • 如何成为 Rust 核心贡献者?Rust 开发的核​​心是什么?Rust 重要技术专家揭秘
  • Redis登录校验
  • 在电脑上免费分区的 5 个有效磁盘分区软件工具
  • flume 负载均衡 详解
  • 2024年电子信息与信号处理国际学术研讨会(EISP 2024,2024年11月15-17日)
  • JavaWeb合集15-Apache POI
  • 需要补充的技能
  • WPF常见容器全方位介绍
  • TS项目中如何合理的为接口定义参数类型
  • C++贪心算法
  • vue video播放m3u8监控视频
  • 车载实操:一对一实操学习、CANoe实操学习、推荐就业机会、就业技术支持、协助面试辅导
  • Vue Element Form组件v-for循环里的表单验证
  • 物联网智能家居环境监测系统
  • context.getExternalFilesDir()与返回的路径对照 Android 存储路径
  • 代码随想录算法训练营第二天(补) | 滑动窗口、模拟、前缀和