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字段不存在,否则添加不成功

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VMware虚拟机清理瘦身

用了一段时间VMware虚拟机之后,发现内存越来越小,也没装什么软件。。。 1.查询磁盘空间分布 虚拟机中磁盘空间查询 先看一下哪些地方占用的空间大,进行排查。 2.排查VMware复制文件产生的缓存路径 VMware复制文件有一个特点,以…

护眼灯的色温标准是什么?护眼灯参数标准介绍

选择合适的护眼台灯不仅能提升家居的品质,还能为我们的生活增添一份温馨与舒适。不过有些色温调节不当不仅不能达到很好的学习效率,还容易打瞌睡,甚至伤眼睛的情况也有可能出现,那么什么色温有什么标准呢? 一、合适的…

推动海外云手机发展的几个因素

随着科技的不断发展,海外云手机作为一种新兴技术,在未来呈现出令人瞩目的发展趋势。本文将在用户需求、技术创新和全球市场前景等方面,探讨海外云手机在未来的发展。 1. 用户需求的引领: 随着人们对移动性和便捷性的需求不断增长&…

备战蓝桥杯---搜索(进阶2)

话不多说&#xff0c;直接看题&#xff1a; 相当于找一个点使它到3个国家的距离和min,显然&#xff0c;我们不可以枚举点&#xff0c;但是&#xff0c;我们可以对这3个国家分别bfs&#xff0c;然后枚举相加即可。 下面是AC代码&#xff1a; #include<bits/stdc.h> usin…

《【python】staticmethod与classmethod深度机制解析——要知其所以然》学习笔记

《【python】staticmethod与classmethod深度机制解析——要知其所以然》 1 Python中classmethod的实现机制 1.1 type_getattro(PyObject *type, PyObject *name)解析

Verilog刷题笔记19

题目&#xff1a; A common source of errors: How to avoid making latches When designing circuits, you must think first in terms of circuits: I want this logic gate I want a combinational blob of logic that has these inputs and produces these outputs I want…

KtConnect 本地连接连接K8S工具

KT Connect简介 Kt Connect &#xff08;Kubernetes Developer Tool&#xff09;是一个阿里开源、轻量级的面向 Kubernetes 用户的开发测试环境治理辅助工具。其核心是通过建立本地到集群以及集群到本地的双向通道。 1.阿里开源&#xff0c;轻量级, 2. 安装快捷简单&#xf…

年假作业day2

1.打印字母图形 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) { int i,j; char k; for(i1;i<7;i) { for(j1;j<i;j) { printf("%c",_); } for(j0,…

Redis中的缓存穿透、雪崩、击穿的原因以及解决方案(详解)

一、概述 ① 缓存穿透&#xff1a;大量请求根本不存在的key&#xff08;下文详解&#xff09; ② 缓存雪崩&#xff1a;redis中大量key集体过期&#xff08;下文详解&#xff09; ③ 缓存击穿&#xff1a;redis中一个热点key过期&#xff08;大量用户访问该热点key&#xff0c;…

很多内容网站里出现的 RSS订阅 的起源,作用,使用方式与底层原理探究,以及如何让自己的网站支持RSS订阅探讨

前言 在逛很多内容社区的时候&#xff0c;经常发现rss订阅这一选项&#xff0c;平时没有怎么理会&#xff0c;因为这与我无关&#xff0c;但是遇见多了不免产生很多好奇&#xff0c;这次专门来探究一下它。 作用 RSS订阅&#xff08;Really Simple Syndication或Rich Site Su…

C++ 11/14/17 智能指针

1. 简介 为了更加容易&#xff08;更加安全&#xff09;的使用动态内存&#xff0c;引入了智能指针的概念。智能指针的行为类似常规指针&#xff0c;重要的区别是它负责自动释放所指向的对象。 标准库提供的两种智能指针的区别在于管理底层指针的方法不同&#xff1a;shared_p…

C++进阶(十一)C++11

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、C11简介二、统一的列表初始化1、&#xff5b;&#xff5d;初始化2、std::initializer_lis…

微信支付服务商,商户快速进件,减少工作量

大家好&#xff0c;我是小悟 服务商拓展特约商户&#xff0c;人工录入大量商户资料&#xff0c;耗时耗力。商户对标准费率不满意&#xff0c;无法说服商户先签约再帮其调整费率。 为了减少服务商工作量&#xff0c;服务商快速进件工具来了&#xff0c;分为移动端和管理端。用好…

【Leetcode】292. Nim 游戏

文章目录 题目思路代码结果 题目 题目链接 你和你的朋友&#xff0c;两个人一起玩 Nim 游戏&#xff1a; 桌子上有一堆石头。你们轮流进行自己的回合&#xff0c; 你作为先手 。每一回合&#xff0c;轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。 假设你们每…

maven 继承

文章目录 前言一、dependencyManagement一、dependencies传递规则二、引用顺序统一声明三、maven插件默认行为声明四、动态server.name 前言 系统整理一下用到的maven继承关系 一、dependencyManagement 版本控制 <properties><!--jar版本定义 --><spring-bo…

网络编程-序列化和反序列化/应用层协议/

预备知识 理解为什么要应用层协议&#xff1f; 在学过套接字编程后&#xff0c;我们对协议的理解更深了一步&#xff0c;协议也就是一种约定&#xff0c;也可以通俗理解为一种口头约定&#xff0c;对于通信双方来说是必须要遵守的。TCP和UDP协议它们是传输层控制协议&#xf…

聚焦网络安全公司,看F5如何应对企业数字化挑战

应用无处不在的当下&#xff0c;从传统应用到现代应用再到边缘、多云、多中心的安全防护&#xff0c;安全已成为企业数字化转型中的首要挑战。有专家指出&#xff0c;目前网络安全市场已经是仅次于计算、存储、网络的第四大IT基础设施市场。那什么网络安全公司应该具有哪些能力…

Magnet AXIOM取证神器的安装使用方法及详细教程

Magnet AXIOM取证神器的安装使用方法及详细教程 公众号&#xff1a;鱼影安全1.Magnet AXIOM取证工具介绍&#xff1a;2.Magnet AXIOM取证工具安装&#xff1a;第一步&#xff1a;第二步&#xff1a; 3.Magnet AXIOM取证工具使用方法&#xff1a; 公众号&#xff1a;鱼影安全 关…

用8086汇编语言写新春祝福

本篇目录 一、前言 1.创作背景 2.最终效果 3.必要的准备 二、实现步骤 1.程序框架 2.使程序暂停一段时间的子程序 3.显示一朵烟花的子程序 &#xff08;1&#xff09;参数 &#xff08;2&#xff09;地址转换 &#xff08;3&#xff09;显示花柄 &#xff08;4&#xff09;清除…

日本承认Omotenashi任务失败

日本在征服月球的尝试失败后承认失败 25.11.2022 日本已经取消了成为第四个登上月球的国家的申请。作为阿尔忒弥斯一号任务的一部分&#xff0c;日本宇宙航空研究开发机构&#xff08;JAXA&#xff09;将其Omotenashi CubeSat与NASA的SLS火箭和猎户座飞船一起送上了月球。但在…