Redis数据库安装、使用、数据类型、常用命令(详解)

news2025/1/22 21:53:51

安装

Releases · tporadowski/redis · GitHub

直接去选择msi格式的,窗口式的安装,一步一步。

安装过程中有一个选项是问你需不需要配置到环境变量中,选上这个选项,不选的话,需要自己去配环境变量。

检查是否安装配置成功:

在cmd 中输入

redis-cli

默认有15个数据库,默认在第0个,可以用select切换数据库。

介绍

Redis:是用C语言开发的Key-Value类型的NoSQL数据库,整个数据库加载在内存当中操作,定期通过异步操作把数据库中的数据flush到硬盘.上进行保存。

NoSQL数据库:就是除去Mysql这种关系型数据库之外的数据库的通常。

redis存的全是字符串

在Redis中,数据存储的时候是以字符串形式存储的,而不会区分数据是数字还是字符串。Redis是一个无模式数据库,它将所有数据都视为二进制字符串。这意味着 Redis 存储的任何内容都是字符串,而 Redis 本身不会对数据类型进行检查。

既然存的全是字符串,那为什么有的数据还能自增自减?

Redis 中之所以能够执行自增(INCR)和自减(DECR)操作,尽管数据存储的全是字符串,是因为 Redis 实际上并不是将所有字符串都当作普通字符串对待。Redis 在内部会根据字符串的内容来判断其是否可以被解释为整数。

具体来说,当你执行自增和自减操作时,Redis会检查键的值是否满足以下条件:

  1. 键的值必须是一个有效的整数字符串。
  2. 键的值必须在 Redis 可以表示的整数范围内。

如果键的值满足这两个条件,Redis 就会将其解释为整数,并执行自增或自减操作。否则,Redis 将返回一个错误,指示键的值不能解释为整数。

优点

  1. 性能好,访问快
  2. 支持的数据类型完善
  3. 支持持久化、支持分布式

缺点

  1. 内存限制: 由于数据存储在内存中,Redis的数据量受到物理内存的限制。如果数据集太大,可能会导致内存不足的问题。
  2. 单线程模型:Redis在单个线程中执行命令,这意味着在处理大量客户端请求时,性能可能会受到限制。

适用场景

  1. 缓存:最常用的一个就是作为缓存层, 将频繁访问的数据存储在内存中, 减轻数据库、服务器的负担,加快访问速度。
  2. 排行榜:热门帖子放到缓存中,访问频率高
  3. 计数器:这个东西访问频率特别高,每个用户点击一下就计数+1,放内存里比较好
  4. 点赞、关注、评论:这些访问频率高的操作
  5. 消息队列:可以做这个 轻量级的消息队列系统, 用于处理实时事件和任务队列。

Redis为什么快?

  1. 内存存储:Redis将数据存储在内存中,而不是传统的磁盘存储。内存存储意味着数据可以直接从RAM中读取,而无需磁盘I/O操作,这使得读取和写入操作非常快速。
  2. 单线程:Redis采用单线程模型来处理命令请求,它不需要进行多线程之间的锁定和同步操作。每个请求都是按顺序处理的,这可以减少竞争和上下文切换,提高性能。
  3. 数据结构优化:Redis支持多种高性能数据结构,例如哈希表和有序集合,这些数据结构经过精心设计和优化,以在内存中快速执行操作。这些数据结构使Redis非常适合各种用例,如计数器、排行榜和消息队列。

数据类型、命令

存储的数据类型:key,value形式存储的 key值是String类型的 value值是下面五种形式。

常用的是5种类型,还有其他的类型,例如位图、超级日志等类型。

(列表可重复,集合不可重复)

  • 字符串类型就是:key值: value1,相当于一个字符串
  • 哈希类型就是:key值: key1:value1,key2:value2,key3:value3,相当于 键值对集合
  • 列表就是:key值: value1,value2,value3,相当于 字符串列表
  • 集合、有序集合就是:key值: value1,value2,value3,相当于 字符串集合

所有类型通用操作

启动: redis-cli

数据库转换:select 11(0-15共16个数据库)

查询所有的key: keys *

查询所有key以test开头的:keys test*

查看某个key的类型:type key值

清空所有库里面的数据 (谨慎使用:flushall

删除某个key: del key值

判断值是否存在:exists key值1,key值2... 

查看剩余的时间:ttl key值

或者直接设置过期时间:expire key值 秒数

1.String字符串

set:格式:set key值 value1 ex 秒数 后面这是设置的过期时间

获取value:get key值

获取值的长度:strlen key值

值自减:decr key值(必须是数字)

值自增:incr key值(必须是数字)

2.hash哈希集合

key不可重复:哈希集合key值的每个键值对中的小key不能重复,但是value可以重复

存储:hset key值 key值(小) value值(小)

同时设置多个小key小value: hmset key值 key值(小) value值(小) key值(小) value值(小)....

取值:hget key值 key值(小)

举例:

#存了一个key是user:1的哈希集合,集合里面存了一个键值对 name:Alice
hset user:1 name "Alice" 
#取出name的值
hget user:1 name

取所有值: hgetall key值

看是否存在:hexists key值 key值(小)

获取集合全部的key:hkeys key值

获取集合全部的value:hvals key值

3.list列表

有序可重复

像一个水平的矩形,可以从左右两边加数据、减数据

从左边开始存数据 lpush key值 value1 value2 value3 value4 value5 ..

存进去就是:value5 value4 value3 value2 value1

从右边开始存数据 rpush key值 value1 value2 value3 value4 value5 ..

存进去就是:value1 value2 value3 value4 value5

从左边获取并删除数据:lpop key值

从右边获取并删除数据:rpop key值

获取某个下标的数据:lindex key值 index值

查看长度:llen key值

查看下标从0-2的数据:lrange key值 0 2

4.set集合

类似hashset 无序不可重复

存数据: sadd key值 value1 value2 value3...

删数据:srem key值 value1

随机获取并删除数据:spop key值 数量 (随机去数据可以用来抽奖)

获取所有成员:smembers key值

获取成员个数:scard key值

并集操作:suntion key值1 key值2

交集操作:sinter key值1 key值2

5.zset有序集合

有序且不重复

它是按照分数排序。

每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员(value)是唯一的,但分数(score)却可以重复。

添加:zadd key score1 value1 [score2 value2 ...] (若存在更新分数)

删除: zrem key value1 [value2 ...]

获取分数:zscore key value1

获取元素个数:zscore key

加分减分:zincrby key 加几分(数字) value1(可以为负数来减少分数)

获取排名:zrank key value1 (下标从0开始)

获取倒序排名 zrevrank key value1

范围获取:zrange key 起始下标 终止下标 [withscores](加withscores会同时输出分数)

不排序范围获取:zrevrange key 起始下标 终止下标 [withscores]

如果觉得文章还不错,麻烦点个赞吧

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

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

相关文章

腾讯云CVM S5服务器性能如何?CPU计算性能测评

腾讯云服务器CVM标准型S5实例具有稳定的计算性能,CVM 2核2G S5活动优惠价格280.8元一年自带1M带宽,15个月313.2元、2核4G配置748.2元15个月,CPU内存配置还可以选择4核8G、8核16G等配置,公网带宽可选1M、3M、5M或10M,百…

如何修改jupyter notebook默认打开路径

1、用jupyter notebook在其他位置打开自己的ipython项目: jupyter notebook是一个很好用的工具,可以保存运行结果,还可以给项目添加很多可视化操作与介绍文字。安装anaconda后,jupyter notebook就会自动安装,点开它会…

进入大厂测试一年后的经历和感触

从去年决定跳出舒适区,应聘大厂,截止到目前已经将近一年,值此之际,总结下自己近一年在大厂的经历。希望通过我的感触,能够帮助你们进一步了解大厂的测试工作。 1、维护上下游合作关系 在大厂,人际关系非常…

山西电力市场日前价格预测【2023-09-11】

日前价格预测 山西日前电力价格预测 预测说明: 如上图所示,预测明日(2023-09-11)山西电力市场全天平均日前电价为346.35元/MWh。其中,最高日前电价为383.36元/MWh,预计出现在19: 15。最低日前电价为313.95…

力扣 8049. 判断能否在给定时间到达单元格

Problem: 8049. 判断能否在给定时间到达单元格 文章目录 思路复杂度Code 思路 数学思维去写这道题 复杂度 时间复杂度: 添加时间复杂度, 示例: O ( 1 ) O(1) O(1) Code class Solution { public:bool isReachableAtTime(int sx, int sy, int fx, int fy, int t)…

MYSQL的慢查询

通过查询SQL的执行频次,我们就能够知道当前数据库到底是增删改为主,还是查询为主。 那假如说是以查询为主,次数我们可以借助于慢查询日志。接下来,我们就来介绍一下MySQL中的慢查询日志。 慢查询日志 慢查询日志记录了所有执行时间…

代码随想录二刷回溯算法-组合问题总结

回溯算法实际上也是一种暴力算法,利用树型结构的回溯与剪枝从而解决问题 解题步骤主要分三步:1.确立回溯函数的参数 2.确立终止条件 3.确立单层遍历逻辑 组合问题 77. 组合 这道题目就是经典的组合问题 如果我们使用for循环来进行暴力求解&#xff…

spring boot-Resolved element must not contain multiple elements 警告

首先强调一下,此问题不影响程序运行。 报错信息: package org.springframework.util; ...public abstract class Assert ...public static void state(boolean expression, String message) {if (!expression) {throw new IllegalStateException(messa…

融合康养产业、乐享宜居灞桥,西安市灞桥康养论坛即将举办

随着我国人口老龄化进程的不断加速以及人们的健康意识不断提高,我国康养产业逐步发展壮大。9月15日,以“融合康养产业、乐享宜居灞桥”为主题的灞桥康养论坛将在西安市灞桥区盛大召开。 据悉,此次论坛由西安市人民政府、陕西省民政厅主办&am…

2024浙大MEM提面拿优秀笔试如何冲刺备考

浙大工程师学院对于参加浙大提前批面试并获得优秀资格的考生,提供了一个“笔试达到联考国家线即可拟录取”的优惠政策。这确实是吸引很多MEM考生参加提前批面试的原因之一。但是,即使获得了优秀资格,考生仍然需要在后续的联考笔试中达到一定的…

JAVASE 窗口按钮

本文目录 1、前言2、JFrame、JButton3、JLabl4、ImageIcon 1、前言 java提供了很多已经写好了的类供我们使用,而我们没必要去细腻研究它的构成原理,就好比我们让我们编程让机器人动起来,没必要细腻研究机器人每个器件是怎么做出来的一样&…

免杀对抗-ShellCode上线+回调编译执行+混淆变异算法

C/C --ShellCode-免杀对抗 介绍: shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。我们经常在CS里面生成指定编程语言的payload,而这个payload里面就是一段十六进制的机…

Centos7 完全断网离线环境下安装MySQL 8.0.33 图文教程

Centos7 完全断网离线环境安装MySQL 8.0.33 图文教程 1.1前言1.2 下载离线安装包1.3 将下载好的离线安装包上传到Centos 7 服务器1.3.1 方式一:联网环境下可利用rz命令进行文件上传1.3.2 方式二:断网环境下使用 XFtp 等软件工具进行上传1.4 解压安装包1.5 执行安装脚本1.6 重…

《极客时间:数据结构与算法之美》【数据结构与算法】

本篇博客是学习过程中的笔记整理和个人思考。原文链接:https://time.geekbang.org/column/intro/100017301 开篇词 | 从今天起,跨过“数据结构与算法”这道坎01 | 为什么要学习数据结构和算法?02 | 如何抓住重点,系统高效地学习数…

CTF入门学习笔记——Crypto密码(古典密码)

文章目录 CTF入门学习笔记——Crypto密码(古典密码)凯撒密码看我回旋踢 摩斯密码摩斯 维吉尼亚密码Vigenre 栅栏密码篱笆墙的影子 栅栏密码篱笆墙的影子 猪圈密码待补充 CTF入门学习笔记——Crypto密码(古典密码) 🚀&a…

领域驱动设计:DDD重构中台业务模型

文章目录 如何避免重复造轮子?如何构建中台业务模型? 如何避免重复造轮子? 要避免重复建设,就要理解中台的理念和思想。“中台是企业级能力复用平台”,“复用”用白话说就是重复使用,就是要避免重复造轮子…

深入解析OLED透明屏的工作原理与优势,智能家居的未来之选

OLED透明屏作为一项突破性的显示技术,不仅具备出色的视觉效果,还带来了全新的功能和应用。 在这篇文章中,尼伽将深入探讨OLED透明屏的功能特点,介绍其在各个领域的广泛应用,并提供实用的案例和数据,希望看…

认识 Express

1. 初识 Express 1.1 Express 简介 1. 什么是 Express 官方给出的概念:Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。 通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web …

“批量随机字母命名文件,轻松管理你的文件库“

你是否曾经遇到过文件命名混乱,难以管理的问题?为了解决这个问题,我们推出了一款全新的文件改名工具,它可以帮助你批量给文件名添加一个随机字母,让你的文件库更加有序、易于管理。 首先第一步,我们要进入…

Python 交易指南:利用 RSI

一、说明 RSI是相对强弱指数(Relative Strength Index)的缩写,是一种技术指标。该指标是用来测量股票或其他交易品种的价格波动强度和速度的,属于动量型指标。RSI常用于技术分析和交易策略中,可以帮助交易者判断市场的…