当前位置: 首页 > article >正文

中间件专栏之redis篇——redis基本原理、概念及其相关命令介绍

一、redis是什么

redis是remote dictionary service的简称,中文翻译为远程字典服务;

redis是一种数据库,若按照类型来归类,则其可以被归入三个类型数据库,分别为:内存数据库、KV数据库、数据结构数据库;内存数据库表示redis的数据是存储在内存中(相较于存储在磁盘中速度大约快10w倍),KV数据库表示redis存储数据的方式为“key-value”的hash表结构,每个key对应一个value;数据结构数据库表示redis存储的数据类型(即value的类型)有多种,包括string、list、hash、set、zset等。

redis的应用非常广泛,很多大型公司如twitter、GitHub、腾讯、阿里巴巴、京东、华为以及众多中小型公司都在使用。

二、redis的应用

在业务开发中,redis中的不同数据结构可以为不同的业务逻辑场景来赋能,比如:

使用hash数据结构(适用于对象有多个属性)记录朋友圈点赞数、评论数和点击数;

使用list数据结构(适用于插入有序的场景)快速显示朋友圈;

记录文章的标题、摘要、作者、封面,用于页面展示,也是用hash,因为也是有多个属性的场景;

通过set数据结构的交并差集来实现记录好友关系(set是集合,所以可以对其进行数学上的集合运算);

……

三、redis的数据结构

如图所示,redis是通过key来索引对应的value,而value有多种数据类型供选择,图中是常见的五种。

string是一个安全的二进制字符串;

双端队列(链表)list是插入有序的;

散列表hash对顺序不关注,但是其field是唯一的;

无序结合set对顺序不关注,里面的值都是唯一的;

有序集合zset对顺序是关注的,里面的值是唯一的,根据member唯一性实现去重,根据score来确定有序。 

四、redis的相关命令

string数据类型相关命令:

SET key value
GET key
INCR key
DECR key
APPEND key value
MSET key1 value1 key2 value2
MGET key1 key2
SETEX key seconds value
GETSET key value

list数据类型相关命令:

LPUSH key value
RPUSH key value
LPOP key
RPOP key
LRANGE key start stop
LLEN key
LREM key count value
LSET key index value

hash数据类型相关命令:

HSET key field value
HGET key field
HGETALL key
HDEL key field
HINCRBY key field increment
HKEYS key
HVALS key
HEXISTS key field

set数据类型相关命令:

SADD key member1 member2
SREM key member
SMEMBERS key
SISMEMBER key member
SCARD key
SPOP key
SDIFF key1 key2
SUNION key1 key2

zset数据类型相关命令:

ZADD key score member
ZRANGE key start stop
ZREVRANGE key start stop
ZREM key member
ZINCRBY key increment member
ZCARD key
ZSCORE key member
ZRANK key member
ZREVRANK key member
ZRANGEBYSCORE key min max

总结:

  • StringSET, GET, INCR, DECR, MSET, MGET
  • ListLPUSH, RPUSH, LPOP, RPOP, LRANGE, LLEN
  • SetSADD, SREM, SMEMBERS, SISMEMBER, SCARD, SPOP
  • HashHSET, HGET, HGETALL, HDEL, HINCRBY, HKEYS
  • ZSetZADD, ZRANGE, ZREVRANGE, ZREM, ZINCRBY, ZRANK

每个指令的具体解释本文不作详细介绍,读者可以自行查阅相关资料。 


http://www.kler.cn/a/559035.html

相关文章:

  • 《Restormer:高效Transformer架构用于高分辨率图像恢复》学习笔记
  • Linux-Ansible命令
  • 多线程篇学习面试
  • 【应急响应工具教程】流量嗅探工具-Tcpdump
  • GB28181协议下的RTP传输
  • 《Head First设计模式》读书笔记 —— 命令模式
  • 如何在 SpringBoot 项目创建并使用 Redis 的详细介绍
  • 管道-过滤器、隐式调用、解释器架构风格对比
  • rpc和http的区别,为啥golang使用grpc 不使用http?
  • PAT 甲级 1091 Acute Stroke
  • 深度学习(5)-卷积神经网络
  • LangChain-基础(prompts、序列化、流式输出、自定义输出)
  • conda环境中运行“python --version“所得的版本与环境中的python版本不一致----deepseek并非全能
  • 怎么在Github上readme文件里面怎么插入图片?
  • rtconfig.cpython-313.pyc 在 .gitignore文件中写入 *.pyc 文件仍然没有被忽略?
  • Grok 3与GPT-4.5的“智能天花板”争夺战——谁才是大模型时代的算力之王?
  • Python常见面试题的详解16
  • Chrome 推出全新的 DOM API,彻底革新 DOM 操作!
  • 250223-Linux/MacOS如何跳过Miniconda的条款阅读,直接安装Miniconda
  • Docker部署 MongoDB及常用命令