date: 2024-07-01
title: Redis
status: DONE
author:
- AllenYGY
tags:
- NOTE
- NoSQL
- Redis
- DataBase
publish: True
Redis
哈希 的实质是一个算法。
键值存储是一个简单的哈希表
所有对数据库的访问都是通过主键
通过键值存储可以
优点
缺点
REmote DIctionary Server(Redis)是一个开源的内存 NoSQL 数据库项目,它实现了一个分布式、内存键值存储,并具有可选的耐用性
该项目主要由 Salvatore Sanfilippo
开发,目前由 Redis Labs 赞助
homebrew
包管理器进行安装)brew install redis
brew services start redis
redis-cli
exit
brew services stop redis
Select <index>
Config get databases
FLUSHDB
FLUSHALL
Set <key> <value>
Get <key>
Del <key>
Exists <key>
Expire <key> <seconds>
Move <key> <db>
Rename <key> <newkey>
Type <key>
getrange <key> <start> <end>
getset <key> <value>
mget <key1> <key2> <key3>
setrange <key> <offset> <value>
strlen <key>
setrange <key> <offset> <value>
incr/decr <key>
incrby/decrby <key> <value>
append <key> <value>
setbit <key> <place> <val>
getbit <key> <place> <val>
bitcount <key>
hset <key> <field> <value>
hmset <key> <field1> <value1> <field2> <value2>
hget <key> <field>
hmget <key> <field1> <field2>
hgetall <key>
HDEL <key> <field1> <field2>
HEXISTS <key> <field>
HLEN <key>
HKEYS <key>
HVALS <key>
HINCRBY <key> <field> <value>
HINCRBYFLOAT <key> <field> <value>
LPUSH <key> <value1> <value2>
RPUSH <key> <value1> <value2>
LPOP <key>
RPOP <key>
LRANGE <key> <start> <end>
LINDEX <key> <index>
LLEN <key>
LTRIM <key> <start> <end>
LREM <key> <count> <value>
LINSERT <key> <before/after> <pivot> <value>
LSET <key> <index> <value>
RPOPLPUSH <source> <destination>
Redis 集合是无序集合
添加、删除和测试成员是否存在的时间为 O(1)
Redis 集合具有不允许重复成员的理想特性。多次添加相同元素将导致集合中只有该元素的一个副本。
SADD <key> <Member1> <Member2>
SMEMBERS <key>
SCARD <key>
SREM <key> <Member1> <Member2>
SISMEMBER <key> <Member>
SPOP <key> <num>
SRANDMEMBER <key> <num>
SMOVE <source> <destination> <member>
SUNION <set1> <set2>
SINTER <set1> <set2>
SDIFF <set1> <set2>
SUNIONSTORE <newkey> <set1> <set2>
SINTESTORE <newkey> <set1> <set2>
SDIFFSTORE <newkey> <set1> <set2>
Redis 排序集是字符串的非重复集合,与 Redis 集类似。
其中,排序集的每个成员都与一个分数相关联,该分数用于将排序集从小到大排序。
虽然分数可以重复,但成员和集合一样是唯一的。
对排序集进行添加、删除或更新等操作的速度非常快(执行时间与元素数量的对数成正比)。
由于元素是按顺序提取的,而不是事后排序,因此还可以通过得分或排名(位置)快速获取范围。
总之,使用排序集,可以以极佳的性能完成许多任务,而这些任务在其他类型的数据库中很难实现。
ZADD <key> <score1> <member1> <score2> <member2>
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
ZSCORE <key> <member>
ZRANGEBYSCORE <key> <min> <max> [WITHSCORES] [LIMIT count]
ZREVRANGEBYSCORE <key> <max> <min> [WITHSCORES] [LIMIT count]
ZCARD <key>
ZCOUNT <key> min max
ZRANK <key> <Member>
ZREVRANK <key> <Member>
ZREM <key> <Member1> <Member2>
ZREMRANGEBYSCORE <key> <min> <max>
ZREMRANGEBYRANK <key> <start> <stop>
ZINCRBY <key> <score>
ZINTERSTORE <newkey> <set count> <set1> <set2> WEIGHTS [weight1][weight2] [aggregate sum|min|max]
ZUNIONSTORE <newkey> <set count> <set1> <set2> WEIGHTS [weight1][weight2] [aggregate sum|min|max]
Redis 实现了发布/订阅(Publish/Subscribe)消息传递范式,在这种范式中,发送者(发布者)不需要向特定的接收者(订阅者)发送消息。
相反,发布的消息被归类到频道中,而不知道有哪些订阅者。
订阅者对一个或多个频道表示兴趣,只接收感兴趣的信息,而不知道有哪些发布者。
这样可以实现更高的可扩展性和更动态的网络拓扑结构。
一旦进入订阅模式,Redis-cli 将不接受任何命令,除非使用 Ctrl+C 退出该模式。
SUBSCRIBE [Chanel1] [Chanel2] [Chanel3]
PSUBSCRIBE pattern1 [pattern2]
PSUBSCRIBE *News
UNSUBSCRIBE [Chanel1] [Chanel2] [Chanel3]
PUNSUBSCRIBE pattern1 [pattern2] (取消订阅模式)
向频道发布消息。
PUBLISH <channel> <message>
Redis 事务允许在一个步骤中执行一组命令。
事务中的所有命令都被序列化并按顺序执行。
在执行 Redis 事务的过程中,绝不会出现其他客户端发出的请求被送达的情况。
这就保证了命令是作为一个单独的操作执行的。
要么处理所有命令,要么不处理任何命令,因此 Redis 事务也是原子性的。
EXEC 命令会触发事务中所有命令的执行。
如果客户端在调用 MULTI 命令之前,在事务上下文中失去了与服务器的连接,则不会执行任何操作。相反,如果调用 EXEC 命令,则会执行所有操作。
MULTI: 标记一个事务块的开始。
MULTI
SET Name Mark
SET Age 25
INCRBY Age 5
GET *
EXEC: 执行所有事务块内的命令。
EXEC
Redis.conf 是 Redis 配置文件,可用于配置 Redis 的各个方面。
Redis 的每个版本都有一个文档详尽的 redis.conf 文件。
示例文件包含默认配置选项,有助于了解这些设置的作用和默认值。
config set 命令可用于设置配置文件中的各个值。
config set CONFIG_SETTING_NAME
config get CONFIG_SETTING_NAME
config get *