Redis 是一个非常快速的内存数据存储系统,它可以用作数据库、缓存和消息代理。它支持多种数据类型,如字符串、列表、集合、散列和有序集合。
以下是一些 Redis 的基础命令及其代码示例的完整详解。
1. Strings(字符串)
SET key value
:将字符串值 value 关联到 key。如果 key 已经持有其他值, SET 就覆写旧值,无视其类型。
Bashredis> SET mykey "Hello World"
OK
13373832873
GET key
:获取 key 关联的值。如果 key 不存在,返回 nil。
Bashredis> GET mykey
"Hello World"
2. Lists(列表)
LPUSH key value1 [value2 ...]
:将一个或多个值插入到列表头部。如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。
Bashredis> LPUSH mylist "Hello"
(integer) 1
redis> LPUSH mylist "World"
(integer) 2
RPUSH key value1 [value2 ...]
:将一个或多个值插入到列表尾部。如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。
Bashredis> RPUSH mylist "!"
(integer) 3
LRANGE key start stop
:返回列表中指定区间内的元素,区间以偏移量 start 和 stop 指定。
Bashredis> LRANGE mylist 0 -1
1) "World"
2) "Hello"
3) "!"
3. Sets(集合)
SADD key member1 [member2 ...]
:向集合添加一个或多个成员。如果成员已经是集合的成员,那么添加操作无效。如果 key 不存在,则创建一个只包含指定成员的集合。
Bashredis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
SMEMBERS key
:返回集合中的所有成员。如果集合不存在,返回一个空列表。
Bashredis> SMEMBERS myset
1) "Hello"
2) "World"
4. Hashes(散列)
HSET key field value
:将哈希表 key 中的字段 field 的值设为 value。如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。如果字段 field 已经存在于哈希表中,旧值将被覆盖。
Bashredis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
HGET key field
:获取存储在哈希表中指定字段的值。如果指定的字段或键不存在,返回一个 nil 值。
Bashredis> HGET myhash field1
"Hello"
这只是 Redis 命令的冰山一角,还有更多的命令和特性等待你去探索和发现。你可以在 Redis 的官方文档中找到更详细和全面的信息:https://redis.io/commands
5. Sorted Sets(有序集合)
ZADD key score1 member1 [score2 member2 ...]
:将一个或多个成员及其分数添加到有序集合中。如果成员已经存在,则更新其分数。如果 key 不存在,则创建一个新的有序集合。
Bashredis> ZADD mysortedset 1 "one"
(integer) 1
redis> ZADD mysortedset 2 "two" 3 "three"
(integer) 2
ZRANGE key start stop [WITHSCORES]
:返回有序集合中指定区间内的成员。默认情况下,成员按分数从低到高排序。使用WITHSCORES
选项可以同时返回分数。
Bashredis> ZRANGE mysortedset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
6. HyperLogLogs(基数统计)
PFADD key element [element ...]
:向 HyperLogLog 添加一个或多个元素。如果 key 不存在,则创建一个新的 HyperLogLog。
Bashredis> PFADD myhyperloglog "foo"
(integer) 1
redis> PFADD myhyperloglog "bar" "baz"
(integer) 1
PFCOUNT key [key ...]
:返回给定 HyperLogLog 的基数估计值。如果有多个 key,则返回它们的并集的基数估计值。
Bashredis> PFCOUNT myhyperloglog
(integer) 3
7. Pub/Sub(发布/订阅)
SUBSCRIBE channel [channel ...]
:订阅一个或多个频道,成为这些频道的订阅者。
Bashredis> SUBSCRIBE mychannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
PUBLISH channel message
:将消息发布到指定的频道。
Bashredis> PUBLISH mychannel "Hello, World!"
(integer) 1
8. Scripts(脚本)
EVAL script numkeys key [key ...] arg [arg ...]
:执行 Lua 脚本。numkeys
表示传递给脚本的键的数量,key
是键列表,arg
是参数列表。
Bashredis> EVAL "return redis.call('set',KEYS[1],ARGV[1])" 1 mykey "Hello Redis"
OK
9. Keys(键操作)
DEL key [key ...]
:删除一个或多个键。
Bashredis> SET key1 "value1"
OK
redis> DEL key1
(integer) 1
EXISTS key [key ...]
:检查一个或多个键是否存在。
Bashredis> SET key1 "value1"
OK
redis> EXISTS key1
(integer) 1
TYPE key
:返回键所存储值的类型。
Bashredis> TYPE key1
string
KEYS pattern
:查找所有符合给定模式的键。
Bashredis> SET foo1 "bar"
OK
redis> SET foo2 "baz"
OK
redis> KEYS foo*
1) "foo1"
2) "foo2"
10. Connections(连接)
PING
:检查服务是否运行正常。
Bashredis> PING
PONG
QUIT
:关闭当前连接。
Bashredis> QUIT
这些命令只是 Redis 提供的功能的一小部分。Redis 提供了极其丰富的功能集,包括事务、Lua 脚本执行、持久化、复制等,适合各种使用场景。要深入了解 Redis,请阅读官方文档或参考相关的学习资源。
10. Transactions(事务)
MULTI
:标记事务块的开始。EXEC
:执行所有事务块内的命令。DISCARD
:取消事务,放弃执行事务块内的所有命令。
Bashredis> MULTI
OK
redis> SET key1 "value1"
QUEUED
redis> SET key2 "value2"
QUEUED
redis> EXEC
1) OK
2) OK
11. Server(服务器)
PING
:测试服务器是否运行正常。
Bashredis> PING
PONG
INFO
:获取服务器的信息和统计。
Bashredis> INFO
# 这里会返回大量的服务器信息
12. Persistence(持久化)
SAVE
:同步保存当前数据库到磁盘。BGSAVE
:在后台异步保存当前数据库到磁盘。
Bashredis> BGSAVE
Background saving started
13. Remote Host Connection(远程主机连接)
FLUSHDB
:清空当前选中数据库的所有数据。FLUSHALL
:清空所有数据库的所有数据。
Bashredis> FLUSHDB
OK
14. Configuration(配置)
CONFIG GET parameter
:获取指定配置参数的值。CONFIG SET parameter value
:设置指定配置参数的值。
Bashredis> CONFIG GET timeout
1) "timeout"
2) "0"
redis> CONFIG SET timeout 30
OK
15. Security(安全)
AUTH password
:使用密码验证当前连接的用户。
Bashredis> AUTH mypassword
OK
16. Debugging(调试)
DEBUG OBJECT key
:获取关于给定键的调试信息。
Bashredis> DEBUG OBJECT mykey
# 这里会返回关于键 'mykey' 的调试信息
17. Connections(连接)
CLIENT LIST
:获取当前连接到服务器的客户端列表。
Bashredis> CLIENT LIST
# 这里会返回当前所有连接的列表
以上只是 Redis 命令的一个简短概览。实际上,Redis 提供了更多高级功能,如 Lua 脚本执行、事务控制、发布/订阅、脚本执行、内存优化等。为了全面掌握 Redis,建议参考官方文档:https://redis.io/commands,并尝试在实际环境中使用这些命令。此外,参加在线课程、阅读相关书籍和社区讨论也是深化理解和提高技能的好方法。