Redis 交互模式

交互模式(Interact Mode)

安装 Redis 时通常连带安装了一个 Redis CLI (apt install redis 或者是 apt install redis-cli 类似的)。在本博客中将会对 redis-cli 中的常用命令做一个使用介绍,下文中以黑色代码块表示在 redis-cli 的实际操作,其中使用 “127.0.0.1:6379>” 字符串表示当前正在输入的命令。注意:本文中仅列出我所使用的常用命令,未必适合所有的人,为了适合索引和使用,应尽可能简约详尽。

1.连接 Connection

在任何命令行中,你可以通过以下命令进入到交互模式/或者说是 Redis 客户端工具。

redis-cli

或者更详细的如下面所示,使用了 Host 和 Port 的参数,用于指定 Redis Server 的主机和端口。

redis-cli -h 127.0.0.1 -p 6379

连接后的状态大概如下,这个时候就进入到了交互模式的最初状态,你的输入将始终显示在 “>” 符号之后。

127.0.0.1:6379> 

2. 认证 Authentication

redis 提供了一些安全措施,其中之一是认证或者是验证用户权限。在 redis.conf 启用 requirepass 配置,下面这个例子是在 redis.conf 中设置了一个 pass 作为认证依据。

# redis.conf
...
requirepass your-password

在设置了 “requirepass” 之后,Redis Server 将拒绝所有未认证的查询。你可以使用以下命令来进行认证。

127.0.0.1:6379> auth your-password 
OK

3. 数据库操作

在 Redis 中,默认情况下有 16 个数据库(编号从 0 到 15)。每个数据库都是相对独立的命名空间,允许用户在同一个 Redis 服务器中存储多个不同的数据集(dataset)。

在连接到 Redis 服务器时,默认使用的是第一个数据库(编号为 0)。可以使用 SELECT 命令切换到其他数据库,例如:

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> 

此时你的提示符变成了 127.0.0.1:6379[1],即意味着当前处于数据库 1 中。

当然你可以使用 CONFIG 命令实时得查到当前的数据库数量,查询结果是一个数组:

127.0.0.1:6379[1]> config get databases
1) "databases"
2) "16"

下面列出一些还可能使用到的数据库操作:

3.1 查看数据库的所有键

127.0.0.1:6379[1]> keys *
1) "key1"
2) "key2"

请注意如果较大的数据库应该避免使用这个命令,这个命令将会遍历整个键空间(Key space),可能会影响数据库的性能。

KEYS 命令还支持使用 glob 模式进行模糊查询,例如:

匹配前缀是 key 的

127.0.0.1:6379[1]> keys key*

匹配包含某个词的

127.0.0.1:6379[1]> keys *word*

匹配以某个字符结尾的

127.0.0.1:6379[1]> keys *d

使用 ? 进行单字符匹配

127.0.0.1:6379[1]> keys *
1) "user:hong:age"
2) "user:xiaoming:age"

127.0.0.1:6379[1]> keys user:????:age
1) "user:hong:age"

在这个例子中,设置了两个 key;使用 “????” 匹配四个字符,所以结果“xiaoming” 没有被匹配。

使用字符范围匹配

127.0.0.1:6379[1]> keys *
1) "b"
2) "c"
3) "a"
127.0.0.1:6379[1]> keys [a-z]
1) "b"
2) "c"
3) "a"
127.0.0.1:6379[1]> keys [a-b]
1) "b"
2) "a"
127.0.0.1:6379[1]> keys [a,b]
1) "b"
2) "a"
127.0.0.1:6379[1]> keys [a,b,c]
1) "b"
2) "c"
3) "a"

3.2 其余数据库操作

查看当前数据库中键的数量

127.0.0.1:6379> dbsize
(integer) 5

清空当前数据库

127.0.0.1:6379> flushdb
OK

清空所有数据库

127.0.0.1:6379> flushall
OK

删除键
删除一个名为 key_name 的键,如果没有或者失败,会返回 0,反之则 1

127.0.0.1:6379> del key_name
(integer) 0

判断键是否存在

127.0.0.1:6379> exists key_name
(integer) 0

设置键的过期时间
为 key_name 设置 50 秒的过期时间,单位为秒。键将在指定的时间后自动删除。

127.0.0.1:6379> expire key_name 50
(integer) 1

查看键的过期时间
返回指定键的剩余过期时间,单位为秒。返回 -1 表示键没有设置过期时间,返回 -2 表示键不存在或已过期。

127.0.0.1:6379> ttl key_name
(integer) 55

4. 数据类型操作

在 Redis 中常用的数据类型有字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)。另外有一些较为不常用的:Geospatial、Bitmaps…等。对于不太常用的,在这里不做更多介绍。

Redis 是典型的键值对型数据库,每种类型在 Redis 中都以键值对存储,其中 Value 中的内容有数据类型的差异。其中每一个键值对所表示的数据叫做数据集(dataset)。如果要删除一个数据集,也就是删除这个键,无论这个数据集是何种类型,都可以直接使用 del key_name 的命令进行删除。

以下是一些常见的 Redis 数据结构及其基本的 CRUD 操作(因为未使用提示符,将其中命令统一使用大写表示以优化观感):

  1. 字符串(String):

    • 创建/更新:
      SET key_name "value"
      
    • 读取:
      GET key_name
      
    • 删除:
      DEL key_name
      
  2. 哈希表(Hash):

    • 创建/更新:
      HSET hash_name field_name field_value
      
    • 读取:
      HGET hash_name field_name
      HGETALL hash_name
      
    • 删除:
      HDEL hash_name field_name
      
  3. 列表(List):

    • 创建/更新: 其中 L 是从列表左侧(头部)插入,R 是从列表右侧(尾部)插入
      LPUSH list_name element1 elem2 elem3
      RPUSH list_name element1
      
    • 读取:
      LRANGE list_name start stop
      (LRANGE list_name 0 20)
      
    • 删除:
      从左侧或者右侧弹出若干个元素,默认是 1
      LPOP list_name
      LPOP list_name 3  
      RPOP list_name
      RPOP list_name 3
      
  4. 集合(Set):
    集合不存在重复的元素,所有的 Member 都是唯一的,通常可以使用集合类型去重。

    • 创建/更新:
      SADD set_name member1 member2 ...
      
    • 读取:
      SMEMBERS set_name
      
    • 删除:
      SREM set_name member1
      
  5. 有序集合(Sorted Set):

    • 创建/更新:
      有序集合的元素增加需要给定一个权重值 score
      ZADD zset_name score member
      (ZADD zset1 1 memember1)
      
    • 读取:
      有序集合的读取可以显示 Score 或者不
      ZRANGE zset_name start stop WITHSCORES
      (ZRANGE zset1 0 20 withscores)
      (ZRANGE zset1 0 20)
      
    • 删除:
      ZREM zset_name member
      
  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过以下步骤将Spring Boot集成Redis哨兵模式: 1. 添加Redis依赖:在`pom.xml`文件中添加Spring Data Redis的依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 配置Redis哨兵模式:在`application.properties`或`application.yml`中添加以下配置。 ```yaml spring.redis.sentinel.master=your_master_name spring.redis.sentinel.nodes=host1:port1,host2:port2,host3:port3 ``` 确保将上述配置中的 `your_master_name` 替换为你实际的 Redis 主节点名称,以及将 `host1:port1,host2:port2,host3:port3` 替换为实际的哨兵节点的主机和端口信息。 3. 创建Redis配置类:创建一个`RedisConfig`类,并使用`RedisSentinelConfiguration`进行配置。 ```java @Configuration public class RedisConfig { @Value("${spring.redis.sentinel.master}") private String sentinelMaster; @Value("${spring.redis.sentinel.nodes}") private String sentinelNodes; @Bean public RedisConnectionFactory redisConnectionFactory() { RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration() .master(sentinelMaster); List<RedisNode> nodes = new ArrayList<>(); String[] hostsAndPorts = sentinelNodes.split(","); for (String hostAndPort : hostsAndPorts) { String[] parts = hostAndPort.split(":"); nodes.add(new RedisNode(parts[0].trim(), Integer.parseInt(parts[1].trim()))); } sentinelConfig.setSentinels(nodes); return new LettuceConnectionFactory(sentinelConfig); } @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(connectionFactory); // 可以根据需要自定义序列化器等配置 return template; } } ``` 在上述配置类中,我们使用`RedisSentinelConfiguration`配置哨兵模式,并使用`LettuceConnectionFactory`作为连接工厂。 4. 使用Redis:现在你可以在Spring Boot应用程序中使用`RedisTemplate`来与Redis进行交互。例如: ```java @RestController public class MyController { @Autowired private RedisTemplate<String, Object> redisTemplate; @GetMapping("/set") public void setValue() { redisTemplate.opsForValue().set("key", "value"); } @GetMapping("/get") public String getValue() { return (String) redisTemplate.opsForValue().get("key"); } } ``` 在上述示例中,我们注入了`RedisTemplate`,并使用其`opsForValue()`方法来进行常见的键值对操作。 这样就完成了Spring Boot集成Redis哨兵模式的配置。你可以根据实际需求使用更多的Redis功能和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值