Redis操作命令详解

Redis(Remote Dictionary Server,远程字典服务)是一个开源的键值存储系统,通常用作数据库、缓存或消息传递系统。它支持多种数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。本文将详细介绍Redis的一些常用操作命令,帮助你更好地使用Redis。

1. 连接命令

1.1 redis-cli

redis-cli 是 Redis 的命令行客户端工具,用于连接 Redis 服务器并执行命令。

redis-cli -h [hostname] -p [port] -a [password]
  • -h [hostname]:指定 Redis 服务器的主机名,默认为 127.0.0.1

  • -p [port]:指定 Redis 服务器的端口号,默认为 6379

  • -a [password]:指定连接密码,如果 Redis 服务器设置了密码。

2. 字符串(Strings)操作

2.1 SET key value

设置键的字符串值。

SET mykey "Hello, Redis!"

2.2 GET key

获取与给定键相关联的值。

GET mykey

2.3 SETEX key seconds value

设置键的值及其过期时间(秒)。

SETEX mykey 10 "Hello, Redis with TTL!"
补充:TTL key
获取键的剩余过期时间(秒)。TTL命令的返回值有三种情况:
  1. 返回-2:当键不存在时,返回-2。

  2. 返回-1:当键存在但没有设置剩余生存时间时,返回-1。这意味着键是永久有效的,不会自动过期。

  3. 返回正整数:当键存在且已设置过期时间时,返回键的剩余生存时间(以秒为单位)。

示例

  1. 键不存在

    redis> TTL non_existing_key
    (integer) -2
  2. 键存在但没有设置过期时间

    redis> SET mykey "Hello"
    OK
    redis> TTL mykey
    (integer) -1
  3. 键存在且已设置过期时间

    redis> SET mykey "Hello" EX 60
    OK
    redis> TTL mykey
    (integer) 57

注意事项

  • 在Redis 2.8版本之前,当键不存在或没有设置过期时间时,TTL命令都返回-1。从Redis 2.8版本开始,当键不存在时返回-2,当键存在但没有设置过期时间时返回-1。

2.4 INCR key

将键的值增加1。

INCR mycounter

2.5 DECR key

将键的值减少1。

DECR mycounter

2.6 GETRANGE key start end

获取键值的一部分。

GETRANGE mykey 0 3

2.7 SETRANGE key offset value

从指定的偏移量开始,替换键值的一部分。

SETRANGE mykey 0 "NewValue"

2.8 STRLEN key

获取键值的长度。

STRLEN mykey

3. 哈希(Hashes)操作

3.1 HSET key field value

设置哈希表中字段的值。

HSET user:1000 username "Alice" age 30

3.2 HGET key field

获取哈希表中字段的值。

HGET user:1000 username

3.3 HGETALL key

获取哈希表中所有的字段和值。

HGETALL user:1000

3.4 HDEL key field1 [field2 ...]

删除哈希表中的一个或多个字段。

HDEL user:1000 username

3.5 HEXISTS key field

检查哈希表中是否存在指定的字段。

HEXISTS user:1000 username

3.6 HINCRBY key field increment

将哈希表中字段的值增加指定的整数。

HINCRBY user:1000 age 1

3.7 HINCRBYFLOAT key field increment

将哈希表中字段的值增加指定的浮点数。

HINCRBYFLOAT user:1000 score 0.5

4. 列表(Lists)操作

4.1 LPUSH key value1 [value2 ...]

将一个或多个值插入到列表头部。

LPUSH mylist "item1" "item2" "item3"

4.2 RPUSH key value1 [value2 ...]

将一个或多个值插入到列表尾部。

RPUSH mylist "item4" "item5"

4.3 LRANGE key start stop

获取列表中指定区间内的元素。

LRANGE mylist 0 -1

4.4 LPOP key

移除并返回列表的第一个元素。

LPOP mylist

4.5 RPOP key

移除并返回列表的最后一个元素。

RPOP mylist

4.6 LINDEX key index

获取列表中指定位置的元素。

LINDEX mylist 0

4.7 LINSERT key BEFORE|AFTER pivot value

在列表中指定元素的前后插入一个元素。

LINSERT mylist BEFORE "item2" "newitem"

4.8 LLEN key

获取列表的长度。

LLEN mylist

4.9 LSET key index value

设置列表中指定位置的元素值。

LSET mylist 0 "newitem1"

5. 集合(Sets)操作

5.1 SADD key member1 [member2 ...]

将一个或多个成员添加到集合中。

SADD myset "item1" "item2" "item3"

5.2 SMEMBERS key

获取集合中的所有成员。

SMEMBERS myset

5.3 SISMEMBER key member

判断成员是否是集合的成员。

SISMEMBER myset "item1"

5.4 SREM key member1 [member2 ...]

移除集合中的一个或多个成员。

SREM myset "item1"

5.5 SDIFF key1 [key2 ...]

获取多个集合的差集。

SDIFF set1 set2

5.6 SDIFFSTORE destination key1 [key2 ...]

获取多个集合的差集,并将结果存储在新的集合中。

SDIFFSTORE diffset set1 set2

5.7 SINTER key1 [key2 ...]

获取多个集合的交集。

SINTER set1 set2

5.8 SINTERSTORE destination key1 [key2 ...]

获取多个集合的交集,并将结果存储在新的集合中。

SINTERSTORE intersectset set1 set2

5.9 SUNION key1 [key2 ...]

获取多个集合的并集。

SUNION set1 set2

5.10 SUNIONSTORE destination key1 [key2 ...]

获取多个集合的并集,并将结果存储在新的集合中。

SUNIONSTORE unionset set1 set2

6. 有序集合(Sorted Sets)操作

6.1 ZADD key score1 member1 [score2 member2 ...]

将一个或多个成员添加到有序集合中,或者更新其分数。

ZADD myzset 1 "item1" 2 "item2" 3 "item3"

6.2 ZRANGE key start stop [WITHSCORES]

获取有序集合中指定区间内的成员,可选地获取其分数。

ZRANGE myzset 0 -1 WITHSCORES

6.3 ZSCORE key member

获取有序集合中成员的分数。

ZSCORE myzset "item1"

6.4 ZREM key member1 [member2 ...]

移除有序集合中的一个或多个成员。

ZREM myzset "item1"

6.5 ZCOUNT key min max

获取有序集合中指定区间的元素数量。

ZCOUNT myzset 1 3

6.6 ZINCRBY key increment member

将有序集合中成员的分数增加指定的值。

ZINCRBY myzset 1 "item1"

6.7 ZRANK key member

获取有序集合中成员的排名(从小到大)。

ZRANK myzset "item1"

6.8 ZREVRANK key member

获取有序集合中成员的排名(从大到小)。

ZREVRANK myzset "item1"

6.9 ZREMRANGEBYRANK key start stop

移除有序集合中指定排名范围内的成员。

ZREMRANGEBYRANK myzset 0 1

6.10 ZREMRANGEBYSCORE key min max

移除有序集合中指定分数范围内的成员。

ZREMRANGEBYSCORE myzset 1 2

7. 事务(Transactions)操作

7.1 MULTI

标记事务块的开始。

MULTI

7.2 EXEC

执行事务块中的所有命令。

EXEC

7.3 DISCARD

取消事务,放弃事务块中的所有命令。

DISCARD

7.4 WATCH key1 [key2 ...]

监视一个或多个键,如果在事务执行之前这些键的值被修改了,则事务会失败。

WATCH mykey

7.5 UNWATCH

取消所有被监视的键。

UNWATCH

8. 其他常用命令

8.1 FLUSHDB

清空当前数据库中的所有键。

FLUSHDB

8.2 FLUSHALL

清空所有数据库中的所有键。

FLUSHALL

8.3 INFO [section]

获取服务器的信息和统计。

INFO

8.4 CONFIG GET parameter

获取配置参数的值。

CONFIG GET maxmemory

8.5 CONFIG SET parameter value

设置配置参数的值。

CONFIG SET maxmemory 1gb

8.6 AUTH password

连接时验证密码。

AUTH mypassword

8.7 ECHO message

打印消息。

ECHO "Hello, Redis!"

8.8 SELECT index

切换到指定的数据库。

SELECT 1

8.9 SHUTDOWN [NOSAVE|SAVE]

关闭Redis服务器,可选地保存数据。

SHUTDOWN SAVE

8.10 BGSAVE

在后台异步保存数据。

BGSAVE

8.11 SAVE

同步保存数据。

SAVE

8.12 LASTSAVE

获取上次成功保存数据的时间。

LASTSAVE

8.13 DBSIZE

获取当前数据库的键数量。

DBSIZE

8.14 TIME

获取当前服务器时间。

TIME

9. 示例

9.1 连接Redis服务器

打开终端,使用 redis-cli 连接到Redis服务器:

redis-cli -h 127.0.0.1 -p 6379

9.2 设置和获取字符串值

设置键 mykey 的值为 "Hello, Redis!",然后获取该键的值:

SET mykey "Hello, Redis!"
GET mykey

9.3 设置和获取哈希表值

设置哈希表 user:1000 的字段 usernameage,然后获取这些字段的值:

HSET user:1000 username "Alice" age 30
HGET user:1000 username
HGET user:1000 age

9.4 操作列表

将多个值插入到列表 mylist 中,然后获取列表中的所有元素:

LPUSH mylist "item1" "item2" "item3"
RPUSH mylist "item4" "item5"
LRANGE mylist 0 -1

9.5 操作集合

将多个成员添加到集合 myset 中,然后获取集合中的所有成员:

SADD myset "item1" "item2" "item3"
SMEMBERS myset

9.6 操作有序集合

将多个成员及其分数添加到有序集合 myzset 中,然后获取有序集合中的所有成员及其分数:

ZADD myzset 1 "item1" 2 "item2" 3 "item3"
ZRANGE myzset 0 -1 WITHSCORES

9.7 事务操作

开始一个事务,执行多个命令,然后提交事务:

MULTI
SET mykey1 "value1"
SET mykey2 "value2"
EXEC

10. 总结

Redis提供了丰富的操作命令,支持多种数据结构,能够满足不同的应用场景。通过本文介绍的命令,你可以快速上手Redis,进行数据的存储、查询和管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值