- MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。 挺有意思的一个方法
移动成功返回 1 ,失败则返回 0 。
# key 存在于当前数据库 redis> SELECT 0 # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。OK redis> SET song "secret base - Zone"OK redis> MOVE song 1 # 将 song 移动到数据库 1(integer) 1 redis> EXISTS song # song 已经被移走(integer) 0 redis> SELECT 1 # 使用数据库 1OK redis:1> EXISTS song # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)(integer) 1 # 当 key 不存在的时候 redis:1> EXISTS fake_key(integer) 0 redis:1> MOVE fake_key 0 # 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败(integer) 0 redis:1> select 0 # 使用数据库0OK redis> EXISTS fake_key # 证实 fake_key 不存在(integer) 0 # 当源数据库和目标数据库有相同的 key 时 redis> SELECT 0 # 使用数据库0OKredis> SET favorite_fruit "banana"OK redis> SELECT 1 # 使用数据库1OKredis:1> SET favorite_fruit "apple"OK redis:1> SELECT 0 # 使用数据库0,并试图将 favorite_fruit 移动到数据库 1OK redis> MOVE favorite_fruit 1 # 因为两个数据库有相同的 key,MOVE 失败(integer) 0 redis> GET favorite_fruit # 数据库 0 的 favorite_fruit 没变"banana" redis> SELECT 1OK redis:1> GET favorite_fruit # 数据库 1 的 favorite_fruit 也是"apple"
- Expireat
用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。
redis 127.0.0.1:6379> EXPIREAT w3ckey 1293840000(integer) 1EXISTS w3ckey(integer) 0
- Setnx
设置成功,返回 1 。 设置失败,返回 0 。
redis> EXISTS job # job 不存在(integer) 0redis> SETNX job "programmer" # job 设置成功(integer) 1redis> SETNX job "code-farmer" # 尝试覆盖 job ,失败(integer) 0redis> GET job # 没有被覆盖"programmer"
用来实现redis锁,Setnx 一个key,使用完删掉。或者给这个key设置一段时间,超时后自动失效,则锁失效。
info memory
used_memory
: 由 Redis 分配器分配的内存总量,以字节(byte)为单位。它包含了实际缓存占用的内存和Redis自身运行所占用的内存(如元数据、lua)。它是由Redis使用内存分配器分配的内存,所以这个数据并没有把内存碎片浪费掉的内存给统计进去。
used_memory_human
: 以人类可读的格式返回 Redis 分配的内存总量
used_memory_rss
: 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。
used_memory_peak
: Redis 的内存消耗峰值(以字节为单位)
used_memory_peak_human
: 以人类可读的格式返回 Redis 的内存消耗峰值
used_memory_lua
: Lua 引擎所使用的内存大小(以字节为单位)
mem_fragmentation_ratio
: used_memory_rss 和 used_memory 之间的比率
mem_allocator
: 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。