Redis数据库✧入门篇

article/2025/11/1 12:20:23

Redis数据库(入门篇)

Redis数据库:非关系型数据库,即NoSql数据库,基于内存存储系统(内存+磁盘),其中有常用的五个数据类型:String,Hash(键值对集合),List(双向队列集合),Set集合,SortedSet(可排序集合)


目录

    • Redis数据库(入门篇)
      • 一、关系型数据库与非关系型数据库
        • 1、关系型数据库优缺点
          • ① 优点
          • ② 缺点
        • 2、非关系型数据库优缺点
          • ① 优点
          • ② 缺点
      • 二、在linux环境下安装Redis
        • 1、下载tar包解压并安装
          • ① 上传至Linux&解压tar包
        • 2、基本测试与配置
          • ①、启动服务器与客户端
          • ②、配置redis修改redis.conf文件
      • 二、常用五类数据结构
        • 1、String 类型
          • ✧ 常用功能
        • 2、Hash类型
          • ✧ 常用功能
        • 3、List双向队列类型
          • ✧ 常用功能
        • 4、Set集合类型
          • ✧ 常用功能
        • 5、SortedSet排序集合类型
          • ✧ 常用功能
        • 6、其他常用命令


一、关系型数据库与非关系型数据库

1、关系型数据库优缺点

① 优点
-容易理解
-使用方便,通用的sql语言
-易于维护,丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大
大降低了数据冗余和数据不一致的概率

② 缺点
-磁盘I/O是并发的瓶颈
-海量数据查询效率低
-横向扩展困难,无法简单的通过添加硬件和服务节点来扩展性能和负载能力,
当需要对数
-据库进行升级和扩展时,需要停机维护和数据迁移
-多表的关联查询以及复杂的数据分析类型的复杂sql查询,性能欠佳。因为要
保证acid,必须按照三范式设计。
OrcaleSql ServerMySql,DB2

2、非关系型数据库优缺点

① 优点
-根据需要添加字段,不需要多表联查。仅需id取出对应的value
-适用于SNS(社会化网络服务软件。比如facebook,微博)
-严格上讲不是一种数据库,而是一种数据结构化存储方法的集合
② 缺点
-只适合存储一些较为简单的数据
-不合适复杂查询的数据
-不合适持久存储海量数据
K-VRedisMemcache
文档:MongoDB
搜索:ElasticsearchSolr
可扩展性分布式:HBase

在这里插入图片描述


二、在linux环境下安装Redis

提前准备好虚拟机…(不会装虚拟机的看以前的文章)


1、下载tar包解压并安装

官方地址下载


① 上传至Linux&解压tar包

在这里插入图片描述


解压命令:》

tar zxvf redis-5.0.3.tar.gz

安装Redis需要c++环境:》

yum -y install gcc-c++ autoconf automake

切入解压后的文件夹中进行编译:

cd redis-5.0.3/ 
make

指定安装路径并创建路径:》

//创建安装目录
mkdir -p /usr/local/redis
//指定安装路径
make PREFIX=/usr/local/redis/ install 

注意:不使用:make install(make install默认安装到/usr/local/bin目录下) 使用:如果需要指定安装路径,需要添加PREFIX参数··


安装成功:

在这里插入图片描述


2、基本测试与配置

①、启动服务器与客户端
//开启服务器CTRL+c结束
./redis-server
//开启客户端
./redis-cli

在这里插入图片描述

此时会发现,服务器会导致这个窗口无法直接启动客户端,需要另开窗口,所以需要进行配置


②、配置redis修改redis.conf文件

Vim查找内容直接输入‘/+内容回车即可,用n键查找下一个’

vim redis.conf//修改配置文件
//修改如下:
daemonize yes//启动时指定redis.conf即可后台启动
protected-mode no//方便window客户端可以连接
# bind 127.0.0.1 ::1//注释掉,否则只能本地可以连接服务器requirepass 123456//配置访问的密码
//以上配置方便后期使用,配置完毕保存退出:wq

启用linux中的客户端:
在这里插入图片描述
此处-p:端口号,-a:服务器访问密码


使用windows客户端连接服务器:
在这里插入图片描述

测试连接即可,ip address查看自己linux地址


二、常用五类数据结构

help@String /hash/list...可以获取相关用法

1、String 类型

✧ 常用功能

添加和查询

set :添加一条String类型数据
get :获取一条String类型数据
mset :添加多条String类型数据
mget :获取多条String类型数据

在这里插入图片描述


递增递减

incr id //默认增加1
incrby id 10
incrbyfloat id 5.52 //增加float
decr id //默认减少1
decrby id 10 //减少10

在这里插入图片描述


删除

del age //删除

在这里插入图片描述


修改

set id 20 //从新复制即可
setnx id 30 //当有值时,不会覆盖

在这里插入图片描述


在这里插入图片描述


位操作:假设模拟一个人的每日签到情况:1为签到,0为未签到

setbit admin 1 1 //admin第一天签到状态1
bitcount admin //统计admin签到状态为1的次数

在这里插入图片描述


2、Hash类型

✧ 常用功能
//其实就是一个hash表
hset :添加一条hash类型数据
hget :获取一条hash类型数据
hmset :添加多条hash类型数据
hmget :获取多条hash类型数据
hgetAll :获取指定所有hash类型数据
hdel :删除指定hash类型数据(一条或多条)

hset Test value 100 //存放普通数据
hget Test value
hset Test json "{\"name\":\"lisi\",\"age\":30}" //存储json数据
hget Test json

在这里插入图片描述


3、List双向队列类型

✧ 常用功能
lpush :左添加()list类型数据
rpush :右添加()类型数据
lrange : 获取list类型数据start起始下标 end结束下标 包含关系
llen :获取条数
lrem :删除列表中几个指定list类型数据//------------------------------------------------
--list双向队列
--0~-1-1代表最后
--rpop:尾部出队列
--lpop:头部出队列
--rpush:尾部添加
--rpop:头部添加
--lset:根据索引修改值
--blpop java n:堵塞n秒,出队时若为空则堵塞指定时间,有内容会立刻结束
--lpushx:对指定内容校验是否存在

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


4、Set集合类型

✧ 常用功能
sadd :添加set类型数据
smembers :获取set类型数据
scard :获取条数
srem :删除数据
//-------------------------------------------
--set求交集
--sinter a b :共同元素
--sinterstore xxx a b:存放至xxx
-- smemebers xxx:遍历某集合
--差集:sdiff a b :不同元素
--sdiffstore xxx a b :差集存放
--sunionstore xxx a b :并集运算
--判断是否存在 sismember a xx :xx再a中是否存在
--smove a b xx:将a中xx移动到b中
--srem a xx;删除a中xx
--sadd a xx:添加xx至a中

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


5、SortedSet排序集合类型

✧ 常用功能
sorted set是通过分数值来进行排序的,分数值越大,越靠后。
zadd :添加sorted set类型数据
zrange :获取sorted set类型数据
zcard :获取条数
zrem :删除数据
zadd需要将Float或者Double类型分数值参数,放置在值参数之前
//----------------------------------------
//可排序的
--sorted set
--zcount :统计范围内个数
--zincrby:增加(可以做排行榜)
--zrevrange :降序
--zrange:正序
//百度经纬度 一些地图的经纬度都是用redis存储

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


6、其他常用命令

Set存放json数据:

set json "{\"name\":\"lisi\",\"address\":\"shanghai\"}"

在这里插入图片描述


指定时间过期

EXPlRE <key> <ttl> :用于将键 key 的生存时间设置为 ttl 秒。
PEXPIRE <key> <ttl> :用于将键 key 的生存时间设置为 ttl 毫秒。
EXPIREAT <key> < timestamp> :用于将键 key 的过期时间设置为 timestamp 所指定的秒数时
间戳。
PEXPIREAT <key> < timestamp > :用于将键 key 的过期时间设置为 timestamp 所指定的毫秒
数时间戳。
TTL :获取的值为-1说明此 key 没有设置有效期,当值为-2时证明过了有效期。
//-------------------------------------------------------
set demo test ex 10 //过期时间10s -2代表过期 -1代表未设置过期时间
ttl demo //查看过期时间

方法一:

在这里插入图片描述


方法二:expire
在这里插入图片描述



http://chatgpt.dhexx.cn/article/uxSKSLGS.shtml

相关文章

详细Redis入门教程

目录 1 Redis的前世今生 1.1 简介 1.2 应用场景 2 Redis下载及安装 2.1 下载及安装 3 Redis使用 3.1 数据类型 3.2 持久化 3.3 事务 3.4 脚本 语法 4 Redis集群 4.1 主从模式 4.2 Sentinel模式 1.哨兵模式集群架构 2.哨兵模式作用 3.哨兵模式工作过程 4.3 Cl…

Redis详解

转载&#xff1a;Redis 详解_罗志宏的博客-CSDN博客_redis详解 1. 什么是 Redis   Redis 是一个基于内存的高性能 key-value 数据库。是完全开源免费的&#xff0c;用C语言编写的&#xff0c;遵守BSD协议。 Redis 特点&#xff1a; Redis 是基于内存操作的&#xff0c;吞吐量…

Redis入门一:Redis实战读书笔记

Redis提供5种不同类型的数据结构&#xff0c;并存储键与5种不同类型的值之间的映射&#xff0c;各式各样的问题都可以自然地映射到这些数据结构上。通过复制、持久化和客户端分片等特性&#xff0c;可以将存储在内存的键值对数据持久化到硬盘&#xff0c;可以使用复制特性来扩展…

Redis数据库介绍

1 Redis简介 Redis&#xff0c;全称远程字典服务&#xff08;REmote DIctionary Server&#xff09;&#xff0c;是一个开源、基于内存、高性能、可数据持久化的key-value存储系统&#xff0c;遵守BSD协议&#xff0c;可用作数据库、缓存和消息中间件。 在Redis中文官网上是这…

redis详解(全)

学前小故事 数据库和缓存保证一致性小故事 windows && linux 安装redis redis 持久化 redis API 学前小故事 [我是redis] 你好&#xff0c;我是Redis&#xff0c;一个叫Antirez的男人把我带到了这个世界上。 说起我的诞生&#xff0c;跟关系数据库MySQL还挺有渊…

Redis 详解

文章目录 Redisredis 简介1. Redis 中的事务1.1 什么是事务&#xff1f;1.2 Redis 中的事务是怎么实现的&#xff1f;1.3 Redis 事务为什么不支持回滚&#xff1f;1.3.1 语法错误情况下的事务回滚状态1.3.2 类型错误情况下的事务回滚状态1.3.3 Redis事务不回滚总结 2. Redis 中…

Redis该怎么学?其实很简单,这份学习路线+资料+书单我全部贡献出来了!

前言 这绝对不是一篇水文&#xff0c;进来的兄弟们千万不要白嫖&#xff0c;真香警告⚠️。&#xff08;点赞&#xff01;&#xff01;&#xff01;&#xff09; 这篇文章很早前就打算写了&#xff0c;特地留到现在是因为我想把Redis系列的文章全部更完&#xff0c;能让需要的…

Redis入门官方文档

Redis资料 Redis官网:http://redis.io/ Redis官方文档:http://redis.io/documentation Redis教程:http://www.w3cschool.cn/redis/redis-intro.html Redis下载:http://redis.io/download redis英文文档 https://redis.io/topics/data-types redis中文文档 http://www.red…

Redis内存数据库必读的4本书

Redis从一个不为人熟知、只有少量应用的崭新数据库&#xff0c;逐渐变成了内存数据库领域的事实标准。时至今日&#xff0c;经过大量的实践应用&#xff0c;Redis简洁高效、安全稳定的特性已经深入人心。 无论是国内还是国外&#xff0c;从五百强公司到小型初创公司都在使用Re…

【好书推荐】Redis入门必备 | 《Redis实战》

一、Redis入门必备 你好&#xff0c;我是小雨青年&#xff0c;一名程序员。 今天为你推荐的书籍是《Redis实战》。 Redis作为一个内存数据库服务器&#xff0c;本书提供了大量讲解和用例。 本书的大部分用例是用Python编写的&#xff0c;希望你有一些Python语言基础。 本书…

Day768.大佬推荐的经典的Redis学习资料 -Redis 核心技术与实战

大佬推荐的经典的Redis学习资料 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于经典的Redis学习资料。 一、经典书籍 在学习 Redis 时&#xff0c;最常见的需求有三个方面。 日常使用操作&#xff1a;比如常见命令和配置&#xff0c;集群搭建等&#xff1b;关键技…

qt QSettings

qt QSettings 用法总结 用户对应用程序经常有这样的要求&#xff1a;要求它能记住它的settings&#xff0c;比如窗口大小&#xff0c;位置&#xff0c;一些别的设置&#xff0c;还有一个经常用的&#xff0c;就是recent files&#xff0c;等等这些都可以通过Qsettings来实现。 …

QT中使用QSettings保存应用程序配置信息

一、问题描述 今天遇到一个问题&#xff0c;就是想实现一个软件&#xff0c;我上一次开启软件时候配置的IP地址以及&#xff0c;打开的文件路径&#xff0c;能够在我下一次打开软件时候自动写入上一次配置的信息&#xff0c;不需要再重新设置配置了。 二、解决方法 使用QT中的…

QSettings用法(例子)

用户通常打开程序&#xff0c;希望每次打开程序都能记住跨会话设置&#xff0c;比如&#xff08;窗口的大小位置&#xff0c;选项等&#xff09;; 窗口打开如果没有记住上次打开的记录&#xff0c;每次关闭它都会重复在同样位置同样大小&#xff0c;好比如手机格式化&#xff…

Qt使用QSettings读写ini文件

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 QSettings 简介 QSettings 类提供了ini文件读写&#xff0c;注册表读写的功能 QSettings::Format有两种: QSettings::NativeFormat 在…

QSettings读写ini文件

QSettings简介 QSettings类提供了持久的独立于平台的应用程序设置。 用户通常希望应用程序能够跨会话记住它的设置(窗口大小和位置&#xff0c;选项等)。在Windows上&#xff0c;这些信息通常存储在系统注册表中&#xff0c;在macOS和iOS上则存储在属性列表文件中。在Unix系统…

Qt中使用QSettings读取配置文件注意事项

QSetting使用中的注意事项 QSetting为Windows、Linux和MacOS系统提供了统一的配置文件/注册表读取方式。 &#xff08;引用QtHelp的一句话&#xff1a;The QSettings class provides persistent platform-independent application settings.&#xff09; 但是在读取配置文件时…

QT 程序参数保存-QSettings类

背景&#xff1a; 程序需要设置参数保存在本地&#xff0c;下次一次打开时参数为上次设置的值&#xff0c;不会被重新初始化。 QSettings类 实现步骤 1 新建paraConfig类 1.1 paraConfig方法中传入文件名参数fileName 1.2 在程序目录下新建一个CFG文件夹&#xff0c;&…

QT中QSettings的使用

首先包含头文件 #include<QSettings>QSettings的使用 QSettings m_iniFile("test.ini", QSettings::IniFormat);m_iniFile.beginGroup("USERCONFIG");m_iniFile.setValue("userName", ui->Edt_user->text());m_iniFile.setValue(&q…