Redis学习笔记--001

2023-09-18 20:05:12

Redis快速入门

一、初识Redis

1.1、NoSQL数据库

在这里插入图片描述

NoSQL数据库Not Only SQL数据库)是一类非关系型数据库,它们采用了不同于传统关系型数据库的数据存储模型。NoSQL数据库旨在解决关系型数据库在某些情况下的限制,如扩展性、灵活性和高可用性。以下是一些常见类型的NoSQL数据库以及它们的主要特点:

  • 文档型数据库(Document Databases):特点:文档型数据库存储数据以文档的形式,通常使用JSON或类似的格式。如:MongoDB

  • 键值存储数据库(Key-Value Stores):键值存储数据库通过将数据存储为键值对的方式,提供了快速的数据检索和存储。这种模型适用于需要高速读写操作的应用,如缓存、会话管理和实时分析。如:Redis

  • 图形数据库(Graph Databases):图形数据库专门用于存储和查询图形数据结构,如网络关系、社交网络和知识图谱。这种模型非常适合复杂的数据关系和图形分析.

NoSQL的主要优势:

  • 高扩展性: NoSQL数据库通常支持水平扩展,允许在需要时添加更多的节点和服务器,以应对大规模数据和高并发负载。

  • 灵活的数据模型: NoSQL数据库通常支持动态模式,可以适应不断变化的数据需求,而无需事先定义表结构

  • 高性能: 针对特定用途的NoSQL数据库通常能够提供快速的读写操作,特别是在大规模数据集上。

  • 高可用性: 许多NoSQL数据库提供了内置的复制和故障容忍功能,以确保数据的高可用性。

1.2、Redis介绍

RedisRemote Dictionary Server)是一种开源的高性能内存键值存储数据库系统。它被设计用于处理各种数据结构,包括字符串、哈希表、列表、集合、有序集合等。Redis是一个非常快速、轻量级、持久化、可扩展的NoSQL数据库,经常用于缓存、会话存储、消息队列、实时统计等应用。

特征:

  • 键值型(K-V),value支持多种不同的数据结构,功能丰富
  • 单线程,每个命令具有原子性
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)。
  • 支持数据持久化(确保安全性
  • 支持主从集群、分片集群

1.3、Redis的安装

推荐使用linux操作系统进行使用

  1. 安装Redis依赖
yum install -y gcc tcl 
#Redis基于c语言编写的,因此首先需要安装Redis所需要的gcc依赖
  1. 下载,解压,编译
#安装wget命令
sudo yum install wget
wget http://download.redis.io/releases/redis-5.0.4.tar.gz # 下载
tar -xzf redis-5.0.4.tar.gz #解压
cd redis-5.0.4
make # 编译
make install #安装 

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

在这里插入图片描述

该目录以及默认配置到环境变量,因此可以在任意目录下运行这些命令

  • redis-cli:是redis提供的命令行客户端
  • redis-server:是redis的服务端启动的脚本
  • redis-sentinel:是redis的哨兵启动的脚本

二、Redis常见命令

2.1、Redis默认启动

安装完成后,在任意目录输入redis-server命令即可启动Redis;

redis-server 

如图
在这里插入图片描述

这种启动属于,会阻塞前台启动整个回话窗口,窗口关闭或者按下CTRL+C则Redis停止。(不推荐使用)

2.2、指定配置启动

  1. 现将redis.config文件进行备份
cp redis.conf redis.conf.bck 
  1. 修改redis.config文件中的一些配置:
# 监听的地址。默认的是127.0.0.1,会导致只能本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes
# 密码,设置后访问Redis必须输入密码
requirepass 123321
  1. Redis的其它常见配置
# 监听的端口 
port 6379  # 默认端口号
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1一个库,默认有16个库,编号为0-15
database 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"
  1. 启动Redis
# 进入redis安装目录
cd /usr/local/redis-5.0.4
# 启动--以加载配置文件的方式进行启动(后台启动)
redis-server redis.conf
# 查询 redis当前所占的进程
ps -ef | grep redis
# 结束当前进程
kill -9 pid

在这里插入图片描述
5. 停止服务

#  利用redis-cli 来执行 shutdown 命令,即可停止 Redis 服务
# 因为之前配置了密码,因此需要通过 -u 来指定密码
redis-cli -u 123456 shutdown

2.3、Redis开机自启设置

  1. 首先,建立一个系统服务文件:redis.service
vi /etc/systemed/system/redis.service

内容如下

[Unit]
Description=Redis Server
After=network.target

[Service]
type = forking
ExecStart=/usr/local/bin/redis-server /usr/local/redis-5.0.4/redis.conf
PrivateTmp=true
# ExecStop=/usr/local/bin/redis-cli shutdown
# Restart=always

[Install]
WantedBy=multi-user.target

  1. 然后重载系统服务
sudo systemctl daemon-reload
  1. 启用Redis服务自启动
    使用以下命令启用Redis服务自启动:
sudo systemctl enable redis
  1. 启动redis
# 通过start启动redis
systemctl start redis
  1. 查看redis状态
systemctl status redis

在这里插入图片描述

  1. 停止redis
systemctl syop redis

三、Redis客户端

3.1、Redis命令行客户端

Redis安装完成后自带了命令行客户端:redis-cli,使用方式如下:

redis-cli [options] [commonds]
# 进入命令端
redis-cli -a 123456 -p 6379

其中常见的options:

  • -h 127.0.0.1:指定要连接redis节点的IP地址,默认是127.0.0.1
  • -p 6379:指定要连接的redis节点的端口,默认是6379
  • -a 123456:指定redis的访问密码

其中的commonds就是Redis的操作命令,例如:

  • ping:与redis服务器做心跳测试,服务器正常返回 pong

在这里插入图片描述

3.2、图形化桌面客户端

RESP软件

四、redis的常用指令

4.1、Redis数据结构介绍

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:

在这里插入图片描述

4.2、Redis的通用命令

命令文档

  1. help命令
# help帮助文档 
help @[结构类型]           #如:help @string
help del  #查询del命令的操作语法
  1. keys命令

查询当前的key

keys : #查看符合模版的所有keys   网址https://redis.io/commands/keys/
keys *name*  #键值中有name的都返回 *表示多个占位符
keys a?? # ?表示一个占位符
keys *   #返回所有的键值
  1. del命令

删除指定键值的k-v

在这里插入图片描述
4. exists命令

判断指定key是否存在
在这里插入图片描述

  1. expire命令和TTL命令

expire命令:给key设置一个有效期
TTL命令: 查看一个Key的剩余有效期

在这里插入图片描述

4.3、Redis各数据类型常用的命令

4.3.1、String类型

在这里插入图片描述

在这里插入图片描述

4.3.2、key的分级存储

key的结构:
Redis的key允许有多个单词形成层级结构,多个单词之间用∵’隔开,格式如下:

项目名称:业务名:类型:id
这个格式并非是固定的。

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

4.3.3、Hash类型

Hash类型有优点:相比String类型的数据可以对某一个键值进行修改。

在这里插入图片描述

在这里插入图片描述

4.3.4、List类型

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

4.3.5、Set类型

在这里插入图片描述
常见命令
在这里插入图片描述

4.3.6、SortedSet类型

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

更多推荐

基于微信小程序的语言课学习系统的设计与实现(源码+lw+部署文档+讲解等)

前言💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗👇🏻精彩专栏推荐订阅👇🏻2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选

PT@古典概型@等概率模型

文章目录abstract等可能概型(古典概型)🎈古典型概率公式基本性质导出性质例抽样方式放回抽样不放回抽样mmm次取求不放回和一次性取mmm个球例:取色球和古典概型古典概型经典问题放球问题两人同一天生日问题超几何分布概型整除取数问题抽签问题取最大号球问题@错位相减分组分配问题古典概型假设条件和实际推断原则其他古典概型

共享WiFi贴项目怎么实施与运营,微火为你提供高效解答!

共享WiFi贴是一项有前景的商业项目,不仅可以满足用户对网络的需求,还可以为创业者带来盈利的机会。那么,我们来看看如何有效地开展共享WiFi贴项目。最重要的是选择合适的位置。共享WiFi贴项目的成功与否很大程度上取决于位置选择。优先选择人流量较大、需求旺盛的地方,如商业区、写字楼、学校、咖啡馆等。通过深入了解目标用户群

LeetCode解法汇总2591. 将钱分给最多的儿童

目录链接:力扣编程题-解法汇总_分享+记录-CSDN博客GitHub同步刷题项目:https://github.com/September26/java-algorithms原题链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台描述:给你一个整数money,表示你总共有的钱数(单位为美元)和另一个整数chi

工业物联网大数据解决方案:排水设备远程监控和大数据统计系统

一、项目背景给排水系统,作为城市的基础设施建设,是居民生产生活的必要保障。由于给排水系统通常站点零散分布,运维管理涉及的区域广泛,水位、流量、机泵运行等运行参数的测报,目前采取人工测量的,上令下达的方式也相对落后,调度管理工作比较被动,很难做到调度的科学性、及时性。因此采取高科技手段,为给排水设施建立全方位二十四小时的

【lesson8】操作系统的理解和类比

文章目录操作系统是什么?为什么要有操作系统?怎么做?学校的例子(理解管理)银行的例子(类比操作系统)操作系统是什么?操作系统是一款软件,是为了进行软硬件资源管理的软件。为什么要有操作系统?操作系统是为了给用户提供一个良好,安全,简单的运行环境。这就是操作系统的目的。怎么做?上面的两个话题我们在Linux发展史这篇博客中

设计模式之代理模式的懂静态代理和动态代理

目录1概述1.1如何实现?1.2优点1.3缺点1.4适用场景2静态代理实现3JDK动态代理实现4CGlib动态代理实现5总结1概述代理模式(ProxyPattern)是一种结构型设计模式,它的概念很简单,它通过创建一个代理对象来控制对原始对象的访问。代理模式主要涉及两个角色:代理角色和真实角色。代理类负责代理真实类,为

mybatis简介&idea导入mybatis

mybatis简介Mybatis是Apache的一个Java开源项目,是一个支持动态Sql语句的持久层框架。Mybatis可以将Sql语句配置在XML文件中,避免将Sql语句硬编码在Java类中。与JDBC相比:1)Mybatis通过参数映射方式,可以将参数灵活的配置在SQL语句中的配置文件中,避免在Java类中配置参

设计模式:解释器模式

目录组件代码示例优缺点总结解释器模式(InterpreterPattern)是一种行为型设计模式,它定义了一种语言的文法,并且定义了该语言中各个元素的解释器。通过使用解释器,可以解析和执行特定的语言表达式。解释器模式的核心思想是将一个语言的文法表示为一个类的层次结构,并使用该类的实例来表示语言中的各个元素。每个元素都有

优化代码,提升代码性能

文章目录一、方法1.尽量指定类、方法的final修饰符二、变量1.循环内不要不断创建对象引用2.基本类型转换成字符串3.如果变量的初值会被覆盖,就没有必要给变量赋初值4.尽量使用基本数据类型,避免不必要的装箱、拆箱和空指针判断三、常量1.将常量声明为staticfinal,并以大写命名2.禁止使用JSON转化对象四、对

nvme prp模型代码处理流程分析

以下函数是prp相关的源码。/**prp模型,除了第一个dmaaddr不是page_size对齐的其余的dmaaddr都要求是page_size对齐的*/staticblk_status_tnvme_pci_setup_prps(structnvme_dev*dev,structrequest*req,structnv

热文推荐