怎么查看网站是否被收录,wordpress同步微博,清理wordpress数据表,娱乐网站建设Redis提供了一系列用于管理和操作键的全局命令。这些命令允许你查看、删除、迁移键#xff0c;以及执行其他与键相关的操作。
有关全局通用类型的命令可以通过help generic命令来查看。有关命令的使用可以通过help 命令来查看#xff0c;例如help keys。
KEYS
keys#x…Redis提供了一系列用于管理和操作键的全局命令。这些命令允许你查看、删除、迁移键以及执行其他与键相关的操作。
有关全局通用类型的命令可以通过help generic命令来查看。有关命令的使用可以通过help 命令来查看例如help keys。
KEYS
keys查找所有符合给定模式的键。
语法
KEYS pattern使用KEYS *查找所有键。
127.0.0.1:6379 keys *
1) a6
2) a3
3) a2
4) a5
5) a4
6) a1127.0.0.1:6379 keys *6
1) a6注意在生产环境中应谨慎使用KEYS命令因为它会扫描整个数据库可能导致性能问题推荐使用下面的SCAN命令。
SCAN
与KEYS命令不同SCAN命令不会一次性返回数据库中的所有键而是返回一个游标和一批键的列表允许客户端分批处理键这对于大型数据库非常有用因为它可以防止服务器因一次性返回过多数据而过载。
SCAN命令的基本语法如下
SCAN cursor [MATCH pattern] [COUNT count]命令选项说明 cursor游标是一个基于64位整数的字符串在Redis的实现中通常是一个字符串形式的整数用于指示迭代过程中的当前位置。第一次调用SCAN时游标应该是0。每次SCAN命令返回后都会提供一个新的游标值应该在下一次调用时使用。当游标返回为0时表示迭代完成。 MATCH pattern可选参数用于指定一个模式只有匹配该模式的键才会被返回。模式匹配遵循glob风格其中*表示任意数量的字符?表示单个字符[]用于指定字符集。 COUNT count可选参数提示Redis希望每次迭代返回的键的数量。然而这是一个提示而不是一个严格的命令因为 Redis可能会返回比请求的更少或更多的键具体取决于内部实现和数据集的大小。
SCAN命令返回一个包含两个元素的数组
一个字符串表示的游标用于下一次迭代。一个数组包含本次迭代返回的键。
以下是一个使用SCAN命令的示例
127.0.0.1:6379 scan 0 match a* count 3
1) 6
2) 1) a62) a43) a24) a5127.0.0.1:6379 scan 6 match a* count 3
1) 0
2) 1) a32) a1这个命令请求从游标0开始迭代返回所有以a开头的键每次迭代最多返回3个键。Redis将返回一个游标和一个键的列表客户端应该使用返回的游标进行下一次迭代直到游标返回为0。
注意由于SCAN命令是基于游标的迭代命令因此它不能保证在迭代过程中键集合的不变性。如果在迭代过程中有键被添加或删除这些变化可能会反映在迭代结果中。因此SCAN命令通常用于非阻塞的、近实时的键集合遍历场景。
EXISTS
exists检查一个键是否存在。如果存在返回1否则返回0。
语法
EXISTS key [key ...]使用
127.0.0.1:6379 exists a1
(integer) 1127.0.0.1:6379 exists b1
(integer) 0DEL
del删除一个或多个键。返回被删除的键的数量。
语法
DEL key [key ...]使用
127.0.0.1:6379 del a5 a6
(integer) 2TYPE
type返回键所存储的值的类型。
语法
TYPE key使用
127.0.0.1:6379 type a1
stringRENAME
rename将键重命名为新的键名。如果新键名已存在则覆盖旧值。
语法
RENAME key newkey使用
127.0.0.1:6379 rename a1 c1
OKRENAMENX
renamenx仅在新键名不存在时将键重命名为新的键名。如果操作成功返回1如果新键名已存在返回0。
语法
RENAMENX key newkey使用
127.0.0.1:6379 renamenx c1 a2
(integer) 0127.0.0.1:6379 renamenx c1 a1
(integer) 1EXPIRE
expire为键设置一个过期时间以秒为单位。当过期时间到达时键会被自动删除。
语法
EXPIRE key seconds使用
127.0.0.1:6379 expire a1 60
(integer) 1PEXPIRE
pexpire为键设置一个过期时间以毫秒为单位。
语法
PEXPIRE key milliseconds使用
127.0.0.1:6379 pexpire a1 6000
(integer) 1EXPIREAT
expireat指定键在何时过期以秒级UNIX时间戳表示。
语法
EXPIREAT key timestamp使用
127.0.0.1:6379 expireat a1 1736500968
(integer) 1PEXPIREAT
pexpireat指定键在何时过期以毫秒级UNIX时间戳表示。
语法
PEXPIREAT key milliseconds-timestamp使用
127.0.0.1:6379 pexpireat a1 1736501168000
(integer) 1TTL
ttl获取键的剩余生存时间以秒为单位。如果键不存在或没有设置过期时间返回-2或-1。
语法
TTL key使用
127.0.0.1:6379 ttl a1
(integer) 152127.0.0.1:6379 ttl a2
(integer) -1127.0.0.1:6379 ttl x1
(integer) -2PTTL
pttl获取键的剩余生存时间以毫秒为单位。
语法
PTTL key使用
127.0.0.1:6379 pttl a1
(integer) 109988127.0.0.1:6379 pttl a2
(integer) -1127.0.0.1:6379 pttl x1
(integer) -2PERSIST
persist移除键的过期时间使其变为永久存储。
语法
PERSIST key使用
127.0.0.1:6379 persist a1
(integer) 1127.0.0.1:6379 ttl a1
(integer) -1MOVE
move将键移动到另一个数据库。如果操作成功返回1如果键不存在或移动失败如目标数据库key已存在返回0。Redis默认支持16个逻辑数据库编号从0到15你可以通过SELECT命令来选择当前操作的数据库。
语法
MOVE key db使用
127.0.0.1:6379 move a1 15
(integer) 1127.0.0.1:6379 select 15
OK127.0.0.1:6379[15] get a1
aaDUMP
dump返回一个序列化后的值该值包含键的类型和值本身。可以使用RESTORE命令来恢复该值。
语法
DUMP key使用
127.0.0.1:6379 dump a1
\x00\x020a\t\x00\xcb\x0e\xdaX\xef\x82$\bRESTORE
restore使用DUMP命令返回的序列化值来恢复键。ttl参数指定键的过期时间以毫秒为单位如果TTL为0则键没有过期时间。
语法
RESTORE key ttl serialized-value使用
127.0.0.1:6379 restore z1 0 \x00\x020a\t\x00\xcb\x0e\xdaX\xef\x82$\b
OKCOPY
copy复制一个key。
语法
COPY source destination [DB destination-db] [REPLACE]使用
127.0.0.1:6379 set k1 v1
OK127.0.0.1:6379 copy k1 k2 db 1
(integer) 1127.0.0.1:6379 copy k1 k2 db 1
(integer) 0127.0.0.1:6379 copy k1 k2 db 1 replace
(integer) 1OBJECT
object允许用户从内部查看给定key的Redis对象的信息。这个命令通常用于调试、了解为了节省空间而对key使用特殊编码的情况或者在将Redis用作缓存程序时通过OBJECT命令中的信息来决定key的驱逐策略eviction policies。
语法
OBJECT subcommand [arguments [arguments ...]]OBJECT命令的子命令
OBJECT REFCOUNT
功能返回给定key引用所储存的值的次数。这个命令主要用于调试。返回值整数表示引用计数。
OBJECT ENCODING
功能返回给定key所储存的值所使用的内部表示即编码方式。返回值字符串表示编码类型。例如字符串可以被编码为raw常规字符串或int用字符串表示64位整数以节约空间列表可以被编码为ziplist为节约空间而设计的特殊表示或linkedlist等。
OBJECT IDLETIME
功能返回给定key自储存以来的空闲时间即没有被读取也没有被写入的时间以秒为单位。这个命令对于了解key的活跃程度很有帮助。返回值整数表示空闲时间秒。需要注意的是虽然返回值以秒为单位但这个计时器的实际精度可能是10秒级别这取决于Redis的实现和配置。注意只有当maxmemory-policy被设置为LRULeast Recently Used或noeviction时该子命令才可以使用。
使用
127.0.0.1:6379 object encoding k1
embstrRANDOMKEY
randomkey随机返回一个key。
语法
RANDOMKEY -使用
127.0.0.1:6379 randomkey
k9TOUCH
touch用于修改指定键的最后访问时间。这个命令不会改变键的值但会更新键的LRULeast Recently Used最近最少使用时间戳这对于实现LRU缓存淘汰策略非常有用。
语法
TOUCH key [key ...]使用
127.0.0.1:6379 touch k1
(integer) 1127.0.0.1:6379 object idletime k1
(integer) 3UNLINK
unlink用于异步删除一个或多个键的命令。
语法
UNLINK key [key ...]特点与优势 异步删除UNLINK命令的主要特点是它是非阻塞的它会在后台异步地删除键值对而不会阻塞服务器的正常操作。这使得UNLINK命令非常适合于删除大量键值对或者删除耗时较长的键值对因为它可以在后台完成删除操作而不会对其他操作产生影响。 内存释放虽然UNLINK命令会立即从Redis的字典中删除键但实际的内存释放是在后台的一个线程中完成的。这样UNLINK命令可以在不阻塞主线程的情况下有效地释放内存资源。 性能优化对于大对象例如大列表、大集合、大哈希等UNLINK命令相比DEL命令具有更好的性能。因为UNLINK命令不会阻塞主线程所以它可以更高效地处理大量数据的删除操作。
使用
127.0.0.1:6379 unlink k1
(integer) 1127.0.0.1:6379 exists k1
(integer) 0WAIT
wait是一个同步复制的命令它用于阻塞当前客户端直到所有先前的写入命令成功传输并被至少指定数量的从节点确认。
语法
WAIT numreplicas timeout使用
127.0.0.1:6379 set k1 v1
OK127.0.0.1:6379 wait 1 2000
(integer) 0
(2.03s)MIGRATE
migrate用于在Redis实例间进行数据迁移的命令。它将一个或多个键从一个Redis数据库实例迁移到另一个Redis数据库实例。MIGRATE命令实际上是将DUMP、RESTORE、DEL三个命令的组合从而简化了操作流程。
语法
MIGRATE host port key| destination-db timeout [COPY] [REPLACE] [AUTH password] [AUTH2 username password] [KEYS key]参数说明 host目标Redis实例的IP地址。 port目标Redis实例的端口号。 key|“”要迁移的键名。在Redis 3.0.6及以后的版本中如果要迁移多个键此处应为空字符串并使用KEYS参数指定要迁移的键列表。 destination-db目标Redis实例的数据库索引。 timeout迁移操作的超时时间单位为毫秒。 COPY如果添加此选项迁移后不会删除源键。 REPLACE如果添加此选项MIGRATE命令会覆盖目标Redis实例中已存在的同名键。如果不提供此参数且目标Redis实例中存在同名键则命令会抛出异常。 AUTH password用于向目标Redis实例进行身份验证的密码。 AUTH2 username password指定用于身份验证的用户名和密码如果目标Redis实例使用了ACL进行访问控制。 KEYS key …在Redis 3.0.6及以后的版本中用于指定要迁移的多个键。
使用
127.0.0.1:6379 migrate 127.0.0.1 6379 1 2000 COPY KEYS k1SORT
Redis的SORT命令是一个功能强大的工具用于对列表List、集合Set或有序集合Sorted Set中的元素进行排序。
以下是对Redis SORT命令的详细解释
基本语法
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]key要排序的源键。BY pattern可选参数指定一个模式来获取实际用来比较的值。如果使用了这个参数Redis会根据这个模式找到对应的值来进行排序。LIMIT offset count可选参数用于限制返回的结果数量类似于SQL中的LIMIT子句。offset表示起始位置count表示数量。GET pattern可选参数允许基于排序后的元素去获取其他键中的值。可以指定多个GET参数。ASC|DESC可选参数指定排序顺序。默认是升序ASC可以使用DESC来指定降序。ALPHA可选参数当需要按字典顺序而不是数值顺序排序时使用。STORE destination可选参数将排序后的结果存储在指定的键中而不是直接返回给客户端。
使用示例
基本排序
假设有一个名为users的列表其中包含用户ID
127.0.0.1:6379 rpush users 3 5 2 8 7
(integer) 5按默认方式排序
127.0.0.1:6379 sort users
1) 2
2) 3
3) 5
4) 7
5) 8按降序排序
127.0.0.1:6379 sort users desc
1) 8
2) 7
3) 5
4) 3
5) 2按字典顺序排序
虽然数字默认按数值排序但字符串默认按字典顺序排序。对于数字列表若希望按字典顺序即逐字符比较排序可使用ALPHA选项
127.0.0.1:6379 sort users alpha
1) 2
2) 3
3) 5
4) 7
5) 8对于纯数字列表结果与默认排序结果相同但用于字符串时会有区别。
使用BY参数
假设有一个用户信息表 uid name level 1 admin 9999 2 jack 10 3 peter 25 4 mary 70
假设有另一个哈希表user:details其中每个用户ID对应一个年龄。
首先设置哈希表
127.0.0.1:6379 lpush uid 1 2 3 4
(integer) 4127.0.0.1:6379 hmset user_info_1 name admin level 9999
OK127.0.0.1:6379 hmset user_info_2 name jack level 10
OK127.0.0.1:6379 hmset user_info_3 name peter level 25
OK127.0.0.1:6379 hmset user_info_4 name mary level 70
OK可以根据用户的level来排序用户ID
127.0.0.1:6379 sort uid by user_info_*-level
1) 2
2) 3
3) 4
4) 1user_level_*是一个占位符它先取出uid中的值然后再用这个值来查找相应的键。
比如在对uid列表进行排序时程序就会先取出uid的值1、2、3、4然后使用user_level_1、user_level_2、user_level_3和user_level_4的值作为排序uid的权重。
使用GET参数
如果我们想要返回用户的level而不是用户ID可以使用GET参数
127.0.0.1:6379 sort uid by user_info_*-level get user_info_*-level
1) 10
2) 25
3) 70
4) 9999返回用户ID、name、level
127.0.0.1:6379 sort uid by user_info_*-level get # get user_info_*-name get user_info_*-level1) 22) jack3) 104) 35) peter6) 257) 48) mary9) 70
10) 1
11) admin
12) 9999限制结果数量
127.0.0.1:6379 sort users limit 0 3
1) 2
2) 3
3) 5这里的LIMIT 0 3表示从索引0开始返回3个元素。
存储排序结果
127.0.0.1:6379 sort users store users_sorted
(integer) 5127.0.0.1:6379 lrange users_sorted 0 -1
1) 2
2) 3
3) 5
4) 7
5) 8结果不会直接返回给客户端但排序后的结果会存储在users_sorted键中。