Redis数据库的介绍、安装、数据结构、常用命令

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: Redis数据库的介绍、安装、数据结构、常用命令

1、 redis是什么呢?

redis是非关系型数据库(nosql),基于内存读写的数据库,采用key-value的方式存储数据

nosql: not noly sql ,没有表的SQL


在目前的企业开发中会用关系型数据库(Oracale+MySQL)+非关系型数据库(Redis 、MongoDB、Memcache)共同开发项目


为什么使用NoSQL

现在存在数据格式非常多样,不适合应用表格进行存储。

表格数据称之为 结构化数据

非表格数据称之为 半结构化 (kv json) 非结构化数据 音频 视频


Redis是基于内存读写的数据库,

硬盘读取速度 大约几百M

内存读取速度 大约 上千M

所以Redis相对来说是要比关系型数据库要快很多


Redis的应用场景:查询读取操作非常频繁的业务

例如:缓存


2、Redis的下载安装

Redis可从

https://redis.io/download

官网进行下载,有windows版和linux版,

都是下载直接解压就可使用

解压后的目录如下:

不过需要注意的是:

在windows系统上,我们要修改redis.windows.conf这个文件,将appendonly no改为appendonly yes

因为redis是忘往内存上面存储数据的,改完这个可以使数据直接同步到硬盘上。

而启动的时候也不要双击redis-server.exe进行启动,因为这样启动是不能加载到redis.windows.conf这个配置文件的,

所以启动的时候我们要在redis解压的目录下进入cmd,

输入:redis-server redis.windows.conf 启动redis服务

如图所示:

这样就启动了Redis服务,再双击redis-cli.exe就启动了Redis的客户端

Linux系统下启动Redis服务要进到解压目录的src下,

输入./redis-server …/redis.conf

进行启动,如图所示:

开启AOF持久化机制,(默认是关闭):

将redis.conf文件中 appendonly 改成 yes ,自动创建appendonly.aof,该文件存储的客户端执行过增删改操作的命令

设置远程连接及密码

1.注释掉bind 127.0.0.1;在地址前面加个#;
2.设置密码,在#requirepass foobared去掉#号变requirepass foobared;foobared是密码;
3.protected-mode 设置成no;修改后是protected-mode no;

3、Redis的数据结构、常用命令

redis数据库存储数据使用的key-value

key是string类型 value的数据结构支持5个string、set、sorted_set、list、hash


value最大占用空间 1GB

redis支持的数据结构比较丰富、对不同的数据结构,还拥有不同的操作命令


set、get、del

keys * 打印所有的key


基础命令 (key value)


keys *


命令的作用:显示redis中 所有的key

keys name* name后面可以有0—多个任意字符

keys name? name后面必须只存在一个字符


exists key

判断 key是否存在 若返回 1 则存在 0 不存在


del key

作用:删除 某一个key


help 命令

帮助命令


flushall 清空所有数据库中的内容


退出 exit|quit 退出redis的服务器

Redis中值是字符串类型 (String 数字)

set

用于设置 一个字符串类型的 key value


get

根据key获取值


mset

一次性设置多个 key value


mget

strlen

append

getrange 截取子串

getrange name 0 3

setex 设置一个key的存活有效期 (秒) psetex 作用与 setex 一致 但是毫秒

setnx

如果当前没有这个key的话 那么 setnx等价于 set命令

如果当前存在这个key的话 那么 setnx不起作用

decr 针对数字类型 做 -1操作 另外 desr key 数字 根据数字做减法操作

incr incrby incrbyfloat


应用场景:缓存查询结果(json或者序列化) 用户访问记录 例如:通过记录ip-访问次数来显示ip的访问

统计粉丝数、点击次数、点赞

Redis中值是set类型

c) List类型的数据操作的命令

i. lpush 栈式结构

lpush name suns[2]

lpush name xiaohei[1]

lpush name xiaowb[0]

ii. lpushx 如果操作的key不存在 则不起作用

如果操作的key存在 则等同于lpush

iii. rpush 操作的内容 等效 java List

第一个操作的元素 就放置在第一个位置

依次类推

应用场景:关注列表、消息队列

hash类型的数据操作的命令

zset (sorted_set)类型的数据操作的命令

7. Redis命令的补充部分

a) 只有set命令 可以操作 任意类型的数据


b) 注意Redis中会有数据库概念 默认存在16数据库 0 ---- 15


默认所使用的数据库 0 如果要选择使用别的数据库 select 编号


注意:不同数据库所创建的key 相互隔离 互补干扰的。通过flushall 清空的是所有数据库中的key. 清空当前的数据库 flushdb这个命令

如何该表Redis中对于数据库的支持呢?编辑 redis.conf


** expire相关命令 (促销 秒杀 手机验证码倒计时 排行榜 Cache)**

i. 在Redis创建key value 默认都是持久化的 永久保存。

ii. 可以通过expire 命令 指定 key 存活时间

expire key seconds


查看某一个key的存活时常

persist 作用 可以把 一个应用了expire命令key 再次转换持久化的key

expireat key unix 时间戳 毫秒数iii.

目录
相关文章
|
2月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
224 86
|
28天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
227 5
|
2月前
|
存储 消息中间件 NoSQL
Redis数据结构:别小看这5把“瑞士军刀”,用好了性能飙升!
Redis提供5种基础数据结构及多种高级结构,如String、Hash、List、Set、ZSet,底层通过SDS、跳表等实现高效操作。灵活运用可解决缓存、计数、消息队列、排行榜等问题,结合Bitmap、HyperLogLog、GEO更可应对签到、UV统计、地理位置等场景,是高性能应用的核心利器。
|
2月前
|
存储 缓存 NoSQL
Redis基础命令与数据结构概览
Redis是一个功能强大的键值存储系统,提供了丰富的数据结构以及相应的操作命令来满足现代应用程序对于高速读写和灵活数据处理的需求。通过掌握这些基础命令,开发者能够高效地对Redis进行操作,实现数据存储和管理的高性能方案。
91 12
|
2月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
2月前
|
存储 缓存 NoSQL
【Redis】 常用数据结构之String篇:从SET/GET到INCR的超全教程
无论是需要快速缓存用户信息,还是实现高并发场景下的精准计数,深入理解String的特性与最佳实践,都是提升Redis使用效率的关键。接下来,让我们从基础命令开始,逐步揭开String数据结构的神秘面纱。
|
3月前
|
存储 缓存 人工智能
Redis六大常见命令详解:从set/get到过期策略的全方位解析
本文将通过结构化学习路径,帮助读者实现从命令语法掌握到工程化实践落地的能力跃迁,系统性提升 Redis 技术栈的应用水平。
|
12月前
|
存储 算法
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
248 59
|
5月前
|
编译器 C语言 C++
栈区的非法访问导致的死循环(x64)
这段内容主要分析了一段C语言代码在VS2022中形成死循环的原因,涉及栈区内存布局和数组越界问题。代码中`arr[15]`越界访问,修改了变量`i`的值,导致`for`循环条件始终为真,形成死循环。原因是VS2022栈区从低地址到高地址分配内存,`arr`数组与`i`相邻,`arr[15]`恰好覆盖`i`的地址。而在VS2019中,栈区先分配高地址再分配低地址,因此相同代码表现不同。这说明编译器对栈区内存分配顺序的实现差异会导致程序行为不一致,需避免数组越界以确保代码健壮性。
83 0
栈区的非法访问导致的死循环(x64)
232.用栈实现队列,225. 用队列实现栈
在232题中,通过两个栈(`stIn`和`stOut`)模拟队列的先入先出(FIFO)行为。`push`操作将元素压入`stIn`,`pop`和`peek`操作则通过将`stIn`的元素转移到`stOut`来实现队列的顺序访问。 225题则是利用单个队列(`que`)模拟栈的后入先出(LIFO)特性。通过多次调整队列头部元素的位置,确保弹出顺序符合栈的要求。`top`操作直接返回队列尾部元素,`empty`判断队列是否为空。 两题均仅使用基础数据结构操作,展示了栈与队列之间的转换逻辑。

热门文章

最新文章