什么是雷迪斯?
代表远程字典服务器的redis是一个开源的内存数据结构存储,它是一种高效且通用的数据库解决方案。 REDIS由Salvatore Sanfilippo开发,旨在通过将所有数据保存在记忆中而不是在磁盘上提供闪电数据访问和检索,从而确保了出色的性能和响应能力。
设置REDIS的关键功能之一是其对各种数据结构的支持,包括字符串,列表,集合,排序集和哈希。这种多功能性使Redis能够提供多种目的,例如充当钥匙值商店,消息经纪或缓存层。
redis使用了一种内存方法,使其非常快地用于读写操作。借助其优化的数据结构和有效的算法,Redis可以在子毫秒响应时间中处理数据,这使其成为需要高性能数据操作的实时应用程序和用例的理想选择。
此外,Redis提供持久性选项,允许用户定期将其数据存储在磁盘上,或者在满足特定条件时。此功能可确保数据耐用性,并使REDIS适用于需要速度和数据持久性的应用。
除了其出色的性能外,Redis还提供了高级功能,例如酒吧/子消息传递,交易和LUA脚本,使开发人员能够轻松构建复杂的应用程序和系统。
Redis由于其简单性,多功能性和对多种编程语言的广泛支持而变得非常流行。它为各种语言提供客户库,使其易于访问且易于集成到不同的软件堆栈中。
您是否需要缓存经常访问的数据,构建实时应用程序,实现消息系统或商店和处理复杂的数据结构,Redis提供了一个强大而有效的解决方案,该解决方案继续在行业中被广泛采用。
总而言之,REDIS是一种强大而灵活的数据库解决方案,在性能,多功能性和易用性方面都出色。它的内存性质,对各种数据结构的支持以及广泛的功能集,对于希望构建高性能应用程序和系统的开发人员来说,它是一个首选。
Redis与其他数据库有何不同?
redis在几个关键方面与其他数据库不同:
- 内存数据存储:REDIS主要将数据存储在内存中,从而允许非常快速的读写操作。这种设计选择将Redis与传统的基于磁盘的数据库区分开来,该数据库产生了磁盘I/O的开销。通过将数据保持在内存中,Redis可以实现高吞吐量和低潜伏期,使其适合需要实时数据处理和高性能缓存的应用。
- 数据结构:REDIS支持广泛的数据结构,包括字符串,列表,集合,哈希和排序集。这种灵活性使开发人员可以有效地对复杂的数据方案进行建模。与许多其他提供固定模式的数据库不同,Redis提供了可以操纵和组合以满足特定应用程序需求的动态和通用的数据结构。
- 内置的缓存机制:REDIS对缓存具有本地支持,这是需要经常访问经常访问数据的场景的绝佳选择。凭借关键到期和驱逐政策等功能,Redis可以有效地管理缓存存储并确保最相关的数据仍然容易获得。
- Pub/sub Messaging :Redis包括内置发布/订阅消息传递功能。此功能允许应用程序实现实时消息传递和事件驱动的体系结构。发布者可以将消息发送到特定的频道,订户实时从这些渠道接收消息。这使REDIS成为构建聊天系统,实时分析和其他需要基于事件的通信的应用程序的合适选择。
- LUA脚本:Redis支持LUA脚本,这使开发人员能够直接在数据库中执行服务器端脚本。这允许在REDIS内执行复杂的操作和交易逻辑,从而减少了应用程序和数据库之间对往返的需求。 LUA脚本通过实现自定义行为和复杂的数据操作来增强Redis的灵活性和可扩展性。
- 复制和持久性:Redis提供了内置复制机制,用于创建数据库的多个副本。通过传播从主节点到一个或多个从属节点的变化,这种复制可确保高可用性和容错性。 REDIS还通过快照和仅附加文件(AOF)记录提供持久性选项,允许在系统故障时将数据保存到磁盘以恢复。
- 简单性和性能:Redis以其简单性和性能而闻名。它提供了一套易于理解和使用的简单命令。关注内存存储和缺乏复杂的查询语言或索引机制简化了数据库的设计,并有助于其出色的性能。
总体而言,REDIS由于其内存存储,多功能数据结构,缓存功能,酒吧/子消息传递,LUA脚本,复制和面向性能的设计而脱颖而出。这些功能使Redis成为需要速度,灵活性和实时数据处理的应用程序的流行选择。
安装Redis和Redis CLI
这是在Linux,MacOS和Windows上安装Redis的步骤:
linux:
- 打开终端窗口。
-
更新软件包管理器:
sudo apt update
-
安装redis:
sudo apt install redis-server
-
启动Redis服务:
sudo systemctl start redis-server
-
访问redis命令行接口(redis-cli):
redis-cli
macos:
- 打开终端窗口。
-
安装Homebrew(如果尚未安装):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
使用Homebrew安装Redis:
brew install redis
-
启动Redis服务:
brew services start redis
-
访问redis命令行接口(redis-cli):
redis-cli
Windows:
- 从Microsoft Open Tech GitHub存储库中下载Windows的最新REDIS: https://github.com/microsoftarchive/redis/releases
- 将下载的存档提取到您选择的目录,例如
C:\Redis
。 - 打开命令提示符窗口。
-
导航到redis安装目录:
cd C:\Redis
-
启动redis服务器:
redis-server.exe
-
打开另一个命令提示符窗口以访问redis命令行界面(redis-cli):
cd C:\Redis redis-cli.exe
请注意,对于Linux和MacOS,安装步骤分别假定 apt
和Homebrew等包装管理人员的使用情况。如果您使用的是其他软件包管理器或分发,则可能需要相应地调整安装命令。
命令
设置操作
-
set
- 命令:
SET
- 语法:
SET key value
- 用法:
SET myset "Hello Redis"
- 描述:设置带有提供的字符串值的键的值。如果密钥已经存在,则覆盖现有值。如果键不存在,此命令也用于创建一个新的键值对。
- 命令:
-
获取
- 命令:
GET
- 语法:
GET key
- 用法:
GET myset
- 描述:检索与指定键关联的值。如果键存在,则命令返回值;否则,它将返回
nil
。
- 命令:
-
sadd
- 命令:
SADD
- 语法:
SADD key member [member ...]
- 用法:
SADD myset "value1" "value2"
- 描述:将一个或多个成员添加到集合中。如果成员已经存在,他们将被忽略。如果不存在密钥,则使用指定成员创建新集合。
- 命令:
-
smembers
- 命令:
SMEMBERS
- 语法:
SMEMBERS key
- 用法:
SMEMBERS myset
- 描述:返回集合的所有成员。如果键不存在,则返回一个空集。
- 命令:
-
simember
- 命令:
SISMEMBER
- 语法:
SISMEMBER key member
- 用法:
SISMEMBER myset "value1"
- 描述:检查成员是否存在于集合中。返回
1
如果成员存在;否则,返回0
。
- 命令:
-
SREM
- 命令:
SREM
- 语法:
SREM key member [member ...]
- 用法:
SREM myset "value1" "value2"
- 描述:从集合中删除一个或多个成员。如果成员不存在,他们将被忽略。如果钥匙在删除成员后变为空,则键也将删除。
- 命令:
-
scard
- 命令:
SCARD
- 语法:
SCARD key
- 用法:
SCARD myset
- 描述:返回集合的基数(成员数)。如果键不存在,
0
将返回。
- 命令:
-
烧结
- 命令:
SINTER
- 语法:
SINTER key [key ...]
- 用法:
SINTER myset1 myset2
- 描述:返回多个集合的交叉点。结果集中只有所有指定集中存在的成员。
- 命令:
-
Sunion
- 命令:
SUNION
- 语法:
SUNION key [key ...]
- 用法:
SUNION myset1 myset2
- 描述:返回多个集合的结合。指定集中的所有成员都包含在结果集中。
- 命令:
-
sdiff
- 命令:
SDIFF
- 语法:
SDIFF key [key ...]
- 用法:
SDIFF myset1 myset2
- 描述:返回两组之间的差异。结果集中的第一组中存在但不包含任何其他指定集中的成员。
- 命令:
排序集操作
-
zadd
- 命令:
ZADD
- 语法:
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
- 用法:
ZADD mysortedset 1 "value1" 2 "value2"
- 说明:将一个或多个具有分数的成员添加到排序集。如果成员已经存在,则其分数将更新。其他选项,例如
NX
(仅添加新元素),XX
(仅更新现有元素),CH
(返回更改元素的数量),INCR
(可以指定现有成员的分数)。
- 命令:
-
zscore
- 命令:
ZSCORE
- 语法:
ZSCORE key member
- 用法:
ZSCORE mysortedset "value1"
- 描述:在排序集中返回成员的分数。如果成员不存在,
nil
将返回。
- 命令:
-
zrange
- 命令:
ZRANGE
- 语法:
ZRANGE key start stop [WITHSCORES]
- 用法:
ZRANGE mysortedset 0 -1
- 描述:根据其位置返回一系列成员。
start
和stop
参数指定了包容性位置。可选的WITHSCORES
标志在结果中包括分数。
- 命令:
-
zrevrange
- 命令:
ZREVRANGE
- 语法:
ZREVRANGE key start stop [WITHSCORES]
- 用法:
ZREVRANGE mysortedset 0 -1 WITHSCORES
- 描述:根据其位置以相反顺序排序的集合返回一系列成员。
start
和stop
参数指定了包容性位置。可选的WITHSCORES
标志在结果中包括分数。
- 命令:
-
zrem
- 命令:
ZREM
- 语法:
ZREM key member [member ...]
- 用法:
ZREM mysortedset "value1" "value2"
- 描述:从排序集中删除一个或多个成员。如果不存在成员,则将忽略。如果钥匙在删除成员后变为空,则键也将删除。
- 命令:
-
zcard
- 命令:
ZCARD
- 语法:
ZCARD key
- 用法:
ZCARD mysortedset
- 描述:返回排序集的基数(成员数)。如果键不存在,
0
将返回。
- 命令:
-
zcount
- 命令:
ZCOUNT
- 语法:
ZCOUNT key min max
- 用法:
ZCOUNT mysortedset 1 10
- 描述:在指定的分数范围内返回成员的计数(
min
和max
包含)。
- 命令:
-
zrank
- 命令:
ZRANK
- 语法:
ZRANK key member
- 用法:
ZRANK mysortedset "value1"
- 描述:按升序排序时,将成员的位置(等级)返回成员的位置(等级)。最低等级是
0
。如果成员不存在,nil
将返回。
- 命令:
-
zrevrank
- 命令:
ZREVRANK
- 语法:
ZREVRANK key member
- 用法:
ZREVRANK mysortedset "value1"
- 描述:按降序排序时,将成员的位置(等级)返回成员的位置(等级)。最高等级是
0
。如果成员不存在,nil
将返回。
- 命令:
-
Zincrby
- 命令:
ZINCRBY
- 语法:
ZINCRBY key increment member
- 用法:
ZINCRBY mysortedset 5 "value1"
- 说明:在指定增量设置的分类中递增成员的分数。如果成员不存在,则将其添加为初始分数作为增量值。
- 命令:
字符串,数字和位操纵
-
附加
- 命令:
APPEND
- 语法:
APPEND key value
- 用法:
APPEND mykey "world"
- 描述:将指定值附加到已经存储在密钥上的字符串值。如果不存在密钥,则使用指定值创建一个新密钥。
- 命令:
-
bitcount
- 命令:
BITCOUNT
- 语法:
BITCOUNT key [start end]
- 用法:
BITCOUNT mykey
- 描述:在字符串值中计数设置位(1s)的数量。可选地,可以指定一个范围来计数该范围内的位。
- 命令:
-
bitop
- 命令:
BITOP
- 语法:
BITOP operation destkey key [key ...]
- 用法:
BITOP AND destkey key1 key2
- 描述:在多个键之间执行位置操作(或,或,XOR,不是),并将结果存储在目标密钥中。
- 命令:
-
bitpos
- 命令:
BITPOS
- 语法:
BITPOS key bit [start] [end]
- 用法:
BITPOS mykey 1 0 10
- 描述:在字符串值中找到第一组位(1)或清除位(0)的位置。可选地,可以指定一个范围来搜索该范围内的位。
- 命令:
-
降低
- 命令:
DECR
- 语法:
DECR key
- 用法:
DECR mykey
- 描述:将密钥的值降低1。如果键不存在,则在降低之前以0的值初始化。
- 命令:
-
decraby
- 命令:
DECRBY
- 语法:
DECRBY key decrement
- 用法:
DECRBY mykey 5
- 描述:通过指定的减少降低密钥的值。如果键不存在,则在减少之前以0的值初始化。
- 命令:
-
获取
- 命令:
GET
- 语法:
GET key
- 用法:
GET mykey
- 描述:检索与指定键关联的值。如果键存在,则命令返回值;否则,它将返回
nil
。
- 命令:
-
getbit
- 命令:
GETBIT
- 语法:
GETBIT key offset
- 用法:
GETBIT mykey 5
- 描述:在字符串值中以指定偏移量返回位值。偏移量为零。
- 命令:
-
getrange
- 命令:
GETRANGE
- 语法:
GETRANGE key start end
- 用法:
GETRANGE mykey 0 3
- 描述:从指定的启动索引到结束索引(包含)。
- 命令:
-
getset
- 命令:
GETSET
- 语法:
GETSET key value
- 用法:
GETSET mykey "newvalue"
- 描述:用提供的字符串值设置键的值并返回旧值。如果不存在密钥,则将其用指定的值初始化。
- 命令:
-
engr
- 命令:
INCR
- 语法:
INCR key
- 用法:
INCR mykey
- 描述:将密钥的值递增1。如果键不存在,则在增量之前以0为初始化。
- 命令:
-
encrby
- 命令:
INCRBY
- 语法:
INCRBY key increment
- 用法:
INCRBY mykey 5
- 描述:通过指定的增量来增加密钥的值。如果键不存在,则在增加之前以0的值初始化。
- 命令:
-
encrbyfloat
- 命令:
INCRBYFLOAT
- 语法:
INCRBYFLOAT key increment
- 用法:
INCRBYFLOAT mykey 2.5
- 描述:通过指定的浮点增量来增加密钥的值。如果键不存在,则在增加之前以0的值初始化。
- 命令:
-
mget
- 命令:
MGET
- 语法:
MGET key [key ...]
- 用法:
MGET key1 key2 key3
- 描述:检索与多个键关联的值。它返回与提供的密钥相对应的值数组。
- 命令:
-
mset
- 命令:
MSET
- 语法:
MSET key value [key value ...]
- 用法:
MSET key1 "value1" key2 "value2"
- 描述:为其各自的值设置多个键。它允许在单个命令中设置多个键值对。
- 命令:
-
msetnx
- 命令:
MSETNX
- 语法:
MSETNX key value [key value ...]
- 用法:
MSETNX key1 "value1" key2 "value2"
- 描述:仅当键已经存在时,将多个键设置为其各自的值。它允许原子设置多个密钥。
- 命令:
-
psetex
- 命令:
PSETEX
- 语法:
PSETEX key milliseconds value
- 用法:
PSETEX mykey 1000 "Hello"
- 描述:用提供的字符串值和指定的到期时间以毫秒为单位设置键的值。
- 命令:
-
set
- 命令:
SET
- 语法:
SET key value [EX seconds|PX milliseconds] [NX|XX]
- 用法:
SET mykey "Hello" EX 60 NX
- 描述:设置带有提供的字符串值的键的值。其他选项,例如到期时间,有条件集(
NX
- 仅在键不存在时,XX
- 仅在密钥存在的情况下才能指定)。
- 命令:
-
setBit
- 命令:
SETBIT
- 语法:
SETBIT key offset value
- 用法:
SETBIT mykey 5 1
- 描述:将字符串值中指定偏移的位设置为0或1。
- 命令:
-
setex
- 命令:
SETEX
- 语法:
SETEX key seconds value
- 用法:
SETEX mykey 60 "Hello"
- 描述:用提供的字符串值和指定的到期时间以秒为单位设置键的值。
- 命令:
-
setnx
- 命令:
SETNX
- 语法:
SETNX key value
- 用法:
SETNX mykey "Hello"
- 描述:仅当键不存在时,将键的值设置为键的值。
- 命令:
-
setrange
- 命令:
SETRANGE
- 语法:
SETRANGE key offset value
- 用法:
SETRANGE mykey 5 "Redis"
- 描述:从指定的偏移量从提供的值开始。 从指定的偏移开始。
- 命令:
-
strlen
- 命令:
STRLEN
- 语法:
STRLEN key
- 用法:
STRLEN mykey
- 描述:返回长度
- 命令:
结论
总而言之,我们讨论了Redis是一种流行的内存数据结构存储,并探索了其独特的特征,使其与其他数据库区分开来。 Redis提供了出色的性能和多功能性,使其适用于各种用例,例如缓存,实时分析,消息传递系统等。
我们还介绍了Linux,MacOS和Windows上Redis的安装过程,包括如何访问REDIS命令行界面(Redis-CLI)以与数据库进行交互。
此外,我们已经深入研究了与设置操作有关的主要命令,为每个命令提供语法,用法示例和描述。这些命令使用户能够执行各种操作,例如添加,检索,修改和从Redis中的集合中删除元素。
此外,我们还探索了与排序设置的操作相关的主要命令,包括诸如添加分数,检索范围,查找位置,增量分数等的操作。 REDIS中的排序集提供了唯一元素的有序集合,可以基于元素值和分数的有效操作。
redis命令,例如附加,get,set,incre和许多其他命令,为字符串操作,位操作和键值管理提供了强大的功能。
redis凭借其多功能性,性能和丰富的命令集,在处理数据密集型应用程序并解决各种数据存储和检索挑战时,仍然是开发人员和建筑师的首选选择。