Redis:redis基础

news2024/12/23 7:33:07

Redis

Remote Dictionary Service即远程字典服务

一个基于内存的key-value结构数据库,在开发中常常作为缓存存储不经常被改变的数据

基于内存存储,读写性能高

在企业中应用广泛

Redis介绍

用C语言开发的开源高性能键值对数据库,可以达到10w+的qps,可以存储丰富的value类型,被称为结构化的nosql数据库

Nosql:(Not Only Sql),泛指非关系型数据库(数据和数据之间没有联系)

是关系型数据库的补充

关系型数据库(RDBMS)

Mysql

Oracle

DB2

SQLServer

非关系型数据库(NoSql)

Redis

Mongo db

MemCached

Redis的作用

数据缓存:将数据缓存到redis中

消息队列

Redis的启动

前端模式启动(不使用)

直接运行bin/redis-server,缺点是启动完成后不能再进行任何操作除非使用ctrl+c退出

后端模式(推荐)

先修改redis.conf配置文件,修改daemonize 为yes

daemonize:后台运行

在启动时指定配置文件运行

./redis-server redis.conf
redis启动客户端
./redis-cli

Redis的终止

在redis客户端中输入
shutdown

Windows中Redis的启动和终止(仅了解)

直接打开redis-server.exe启动redis服务

默认端口号为6379

ctrl+c停止服务

打开redis-cli.exe启动redis客户端,默认连接本地Redis服务,且不需要认证即可连接成功

使用可视化工具连接redis服务器端

redis-desktop-manager

安装过程略,端口号默认6379

如果需要允许其他机器进行访问需要配置redis.conf进行内容配置

添加当前linux局域网的ip地址

切换redis数据库
select 数据库索引

注:一个redis服务器中可以包含多个数据库,客户端可以只连接Redis中的某个数据库

Redis中有db0-db15的16个数据库,不能被删除也不能新建,数据库中没有表结构,客户端默认连接第0个数据库

Redis的数据类型

redis的value支持五种数据类型

key必须为String类型,用以表示存储的数据

命名规则:

不能太长避免查询效率低

不能太短避免重复

value支持五种数据类型,表示存储的数据

string:字符串

hash:键值对

list:列表类型,存取有序,可以重复

set:集合类型,存取无需,不可重复

sorted set/zset :有序集合类型,每个元素有一个分数用以决定顺序

string类型

Redis中最基础的数据类型

字符串,整数,浮点类型都以字符串写入

最多容纳512m

常用命令
set 键 值
//添加或修改一个键值对
get 键
//根据键获取值,不存在返回nil(c语言中的null)
del 键
//删除指定键值对,返回删除个数
SETEX key seconds value 
//设置指定key的值,将key的过期时间设为seconds秒,
//即SET key value ex seconds
EXPIRE key seconds
//如果一个key存在,设置过期时间
SETNX key value/set key value nx
//保存键值对,如果key存在则不保存

mset name lisi addr sh
批量添加name为lisi addr为sh
mget name age addr
批量获取name,age,addr的值
del name age
批量删除name age

hash类型操作命令

Redis中的hash类型可以看成键值均为String类型的Map容器

每个Hash中可以保存2^32-1个键值对

常用命令
hset 键 字段 值
//添加键,字段,值
hget 键 字段
//通过键,字段得到值
hmset 键 字段 值 字段 值
//multiply多个,一次添加多个字段和值
hmget 键 字段 字段
//通过键,获取多个字段和值
hdel 键 字段 字段
//删除一个或多个字段的值
hgetall 键
//得到这个键下所有的字段和值
HKEYS 键
//获取哈希表中所有字段
HVALS 键
//获取哈希表中所有值

list类型

在Redis中list类型时按照插入顺序排序的字符串链表,可以在左侧和右侧添加新元素

如果该键不存在就会创建这个键对应的链表

如果键对应的链表没有元素就会将键也移除

list可以包含的元素为2^32-1个

常用命令
lpush 键 元素 元素
//从左边向指定的键中添加一个或多个元素,返回元素个数
rpush 键 元素 元素
//从右边向指定的键中添加一个或多个元素,返回元素个数
l/rpop 键
//从左/右侧删除一个元素,返回被删除的元素
lrange 键 开始 结束
//得到键中指定范围的元素的数据
从左到右的索引为0-n
从右到左的索引为-1-(-(n+1))
所以从左到最后一个即为0--1
lindex 键 索引值
//查询指定索引的元素
llen 键
//获取列表的长度
BRPOP key1 [key2] timeout
//移出并获取列表的最后一个元素,如果列表没有元素就会阻塞队列直到有元素或超时
LREM key 删除元素个数 value值
//从表头删除指定个数的元素

Set类型

没有排序的字符集合,不可重复

可包含的最大元素数量为2^32-1个

常用命令
sadd 键 元素 元素
//向一个键中添加一个或多个元素
smemers 键
//得到这个集合中所有的元素
sismember 键 元素
//判断指定的元素在集合中是否存在,存在返回1,不存在返回0
srem 键 元素 元素
//通过键删除一个或者多个元素
sinter key1 [key2]
//返回给定所有集合的交集(集合中共有的部分)

Zset/sorted set类型

sorted set有序集合

和set集合类似,但每个元素会关联一个分数作为排序因子

通过分数进行从小到大的排序

集合成员唯一但分数可以重复

常用命令
zadd 键 分数 值 分数 值
//添加一个或多个元素,每个元素都有一个分数
zincrby key increment member
//对指定元素的分数进行增减操作
zrange 键 开始索引 结束索引
//获取指定范围的元素,得到所有元素,索引为0到-1
zrange 键 开始索引 结束索引 withscores
//查询指定元素和对应的分数
zrevrange 键 开始索引 结束索引 withscores
//按照分数倒序获取指定的元素和对应的分数
zrem 键 值 值
//删除一个或者多个值
zcard 键
//得到元素个数
zrank 键 值
//得到元素的索引号
zscore 键 值
//得到元素的分数

Redis通用命令

keys 匹配字符
//查询所有的键,可以使用通配符
//*匹配多个字符
//?匹配一个字符
del 键1 键2
//删除任何的值类型且可以同时删除多个键
exists键
//判断键是否存在,不存在返回0,存在返回1
type键
//判断指定键的值类型,返回类型名字
select数据库编号
//选择其他数据库
move键数据库编号
//将当前数据库中指定的键移动到另一个数据库中
TTL key
//返回给定key的剩余生存时间(TTL,time to live),以秒为单位
从Redis2.8开始
key不存在或已过期:-2
key存在或者没有设置过期时间:-1
flushall
//清空redis所有库(不推荐)

Java中操作Redis

Redis的java客户端

jedis

lettuce

redisson

Jedis

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.8.0</version>
</dependency>
Jedis类的常用方法

方法名即为redis中的命令名

方法参数即为命令参数

每次访问Redis数据库时都需要创建一个jedis对象

请添加图片描述

Spring Data Redis

Spring的一部分,在Spring应用中通过简单的配置即可访问Redis服务,高度封装了Redis底层开发包

@Autowired
private RedisTemplate<String,String> redisTemplate;
//注入redisTemplate

@Autowired
private StringRedisTemplate stringRedisTemplate
//redisTemplate的子类,避免写泛型

ValueOperations<String,String> vop = redisTemplate.opsForValue();
//根据redisTemplate获取操作String类型数据的对象
可以使用stringRedisTemplate

Redis持久化机制

服务端关闭会使数据部分丢失

因为redis服务器默认每隔一段时间才会写入一次内存数据到硬盘上

redis的持久化

因为redis的数据在ram上存储,所以断电就会丢失

所以需要保存到硬盘上做持久化操作

支持两种持久化方式:

RDB(快照)方式(默认)

将数据以快照方式写入二进制文件

默认文件名为dump.rdb

可以通过配置进行自动快照持久化

需要设置两个条件

时间和修改键数,当两个条件都满足时就会触发快照

优点:

持久化效率高

数据库宕机后数据恢复效率更高

缺点:

仍然可能出现数据丢失,如果在持久化之前出现宕机,就会丢失数据

AOF的存储方式

将每一个收到的写命令通过write函数追加到文件中

重启时会全部执行来进行重建

有三种同步策略

每秒同步
每次同步
不同步
优点:

AOF包含一个格式清晰,易于理解的日志文件用于记录所有修改操作,数据安全性更高,所有操作异步完成

缺点:

运行效率慢

文件更大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1711518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从alpine构建预装vcpkg的docker image用于gitea actions CI

动机 想要构建一个基于vcpkg的交叉编译容器平台用于cpp项目的CI&#xff08;自动集成&#xff09;&#xff0c;此处仅提供最基础的image&#xff0c;amd64的机子上构建完成后大小为533兆&#xff08;着实不小&#x1f613;&#xff09;&#xff0c;各位看官可以在此基础上自行…

Gradle的学习

1.1 Gradle的优势 一款最新的&#xff0c;功能最强大的构建工具&#xff0c;用它逼格更高 使用Groovy或Kotlin代替XML&#xff0c;使用程序代替传统的XML配置&#xff0c;项目构建更灵活 丰富的第三方插件&#xff0c;让你随心所欲使用 完善Android,Java开发技术体系 1.2 …

Filebeat进阶指南:核心架构与功能组件的深度剖析

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《洞察之眼&#xff1a;ELK监控与可视化》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是ELK 2、FileBeat在ELK中的角色 二、Fil…

树莓派4B 学习笔记1:TF卡系统盘烧录_初次启动_远程端连接配置

今日开始学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; TF卡系统盘烧录_初次启动_远程端连接配置 目录 格式化SD卡&#xff1a; 烧录系统Win32DiskImager&#xff1a; Raspberry Pi Imager镜像烧写&#xff1a; 树莓派官网资料…

教育装备之先导小型五轴加工中心

随着制造业的快速发展和技术的不断进步&#xff0c;对高端技术人才的需求日益增长。五轴联动技术作为解决异性复杂零件高效优质加工问题的重要手段&#xff0c;受到了广泛关注。因此&#xff0c;培养掌握五轴联动技术的专业人才显得尤为重要。 先导小型五轴加工中心提供了真实的…

「数据结构」队列

目录 队列的基本概念 队列的实现 头文件queue.h 实现函数接口 1.初始化和销毁 2.出队列和入队列 3.获取队头元素和队尾元素 4.队列长度判空 后记 前言 欢迎大家来到小鸥的博客~ 个人主页&#xff1a;海盗猫鸥 本篇专题&#xff1a;数据结构 多谢大家的支持啦&#xff…

对比表征学习(一)Contrastive Representation Learning

对比表征学习&#xff08;二&#xff09;Sentence Embedding 主要参考翁莉莲的Blog&#xff0c;本文主要聚焦于对比损失函数 对比表示学习&#xff08;Contrastive Representation Learning&#xff09;可以用来优化嵌入空间&#xff0c;使相似的数据靠近&#xff0c;不相似的数…

玩转STM32-通用同步/异步收发器USART(详细-慢工出细活)

CPU与外围设备之间的信息交换或计算机与计算机之间的信息交换称为通信。基 本的通信方式有两种&#xff0c;即并行通信和串行通信。文章目录 一、串行通信基础1.1 串行通信的方式1.2 串行通信的数据传输形式1.3 波特率 二、STM32的USART的结构特征&#xff08;了解&#xff09;…

采集EthernetIP IO从站设备数据 转 profinet IO协议项目案例

1 文档说明 设置网关采集EthernetIP IO设备数据把采集的数据转成profinet IO协议转发给其他系统。 2 准备工作 仰科网关。支持采集EthernetIP IO数据&#xff0c;profinet IO协议转发。电脑。IP设置成192.168.1.198&#xff0c;和网关在同一个网段。网线、12V电源。 3 网关…

MySQL8报错Public Key Retrieval is not allowedz 怎么解决?

问题描述 当我们使用数据库管理工具连接mysql8的时候&#xff0c;可能遇到报错&#xff1a; Public Key Retrieval is not allowed 解决办法 1、在连接属性中配置allowPublicKeyRetrieval设置为true 2、在连接URL中加上配置allowPublicKeyRetrieval为true

《软件方法(下)》8.3.4.6 DDD话语“聚合”中的伪创新(1)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.3 建模步骤C-2 识别类的关系 8.3.4 识别关联关系 8.3.4.6 DDD话语“聚合”中的伪创新 DDD话语中也有“聚合”。Eric Evans的“Domain-Driven Design: Tackling Complexity in the…

「光储充放」一体充电站-一文读懂光储充放充电站

“光储充放”一体充电站作为一种储能充电的新形式渐渐走进人们的生活&#xff0c;全国很多地区都开始陆续投放运营“光储充放”一体充电站&#xff0c;今天的这篇文章&#xff0c;就带大家全面了解“光储充放”这一新型充电站。 头图来源 | 视觉中国 01 政策背景 早在2020年…

43-2 Linux入侵排查实验

环境准备: 老规则,我没有靶场就自己搭建了类似, 这里准备一台CentOS 7虚拟机作为受害者,然后使用CS制作木马并在受害者主机上线,具体过程可以看我之前写的一篇文章: 黑客必备利器:如何在系统上安装和使用 CobaltStrike(简称:CS)_cobalt strike-CSDN博客 最终的效果…

【ARFoundation自学03】AR Point Cloud 点云(参考点标记)功能详解

和平面识别框架一样 1为XR Origin添加AR Point Cloud Manager组件 然后你的ar应用就具备了点云识别功能&#xff0c;就这么简单 2.可视化这些云点 创建一个美术效果的预制体&#xff0c;人家提供了预设模板 然后拖到仓库&#xff08;ASSETS&#xff09;创建预制体&#xff…

红酒与不同烹饪方法的食物搭配原则

红酒与食物的搭配是一门艺术&#xff0c;而不同烹饪方法的食物与红酒的搭配也有其与众不同之处。红酒与食物的搭配不仅涉及到口感、风味和营养&#xff0c;还与烹饪方法和食物质地等因素息息相关。云仓酒庄雷盛红酒以其卓着的品质和丰富的口感&#xff0c;成为了实现完善搭配的…

常用压力、流量单位换算表

一、压力为单位面积所承受的力 压力&#xff1a;绝对压力 、表压力 、大气压力。相互关系&#xff1a;绝对压力表压力大气压力 绝对压力:当压力表示与完全真空的差。测量处的实际压力。 表压力:当表示其气体数值与该地域大气压力的差值。 大气压力&#xff1a;由大气重量所…

JAVA学习·String类的常用方法

String 类及其创建 String 类的创建 String 类是 Java 内置的一个类&#xff0c;其完全限定类名是java.lang.String。想要创建一个字符串有多重方式&#xff0c;比如创建字符串"Hello"&#xff1a; String s1 "Hello"; // 字面量创建 String s2 new St…

IDEA升级web项目为maven项目乱码

今天将一个java web项目改造为maven项目。 首先&#xff0c;创建一个新的maven项目&#xff0c;将文件拷贝到新项目中。 其次&#xff0c;将旧项目的jar包&#xff0c;在maven的pom.xml做成依赖 接着&#xff0c;把没有maven坐标的jar包在编译的时候也包含进来 <build>…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月29日,星期三

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年5月29日 星期三 农历四月廿二 1、 首个未成年人游戏退费标准发布&#xff1a;监护人与网游服务提供者将按错担责。 2、 六部门联合印发通知&#xff1a;鼓励加快高清超高清电视机等普及、更新。 3、 神舟十八号航天员乘…

Rocksdb原理简介

100编程书屋_孔夫子旧书网 Rocksdb作为当下nosql中性能的代表被各个存储组件&#xff08;mysql、tikv、pmdk、bluestore&#xff09;作为存储引擎底座&#xff0c;其基于LSM tree的核心存储结构&#xff08;将随机写通过数据结构转化为顺序写&#xff09;来提供高性能的写吞吐时…