当前位置: 首页 > news >正文

Redis基础:命令行操作实践指南

Redis是一个高性能的键值存储系统,提供了丰富的命令行操作工具redis-cli,可以通过它与Redis服务器进行交互。本文将详细介绍 Redis 的常用命令行操作,包括连接服务器、数据操作、事务管理、发布订阅等,帮助你快速了解Redis的基础操作。

1 连接Redis服务器

1.1 本地连接

# Redis服务器运行在本地,直接使用以下命令连接:
redis-cli

[root@node3 bin]# ./redis-cli 
127.0.0.1:6379> 

1.2 远程连接

# Redis服务器运行在远程主机上,使用以下命令连接:
./redis-cli -h <host> -p <port> -a <password>

<host>:Redis服务器的主机地址
<port>:Redis服务器的端口号(默认是 6379)
<password>:Redis服务器的访问密码(如果有)

[root@node3 bin]# ./redis-cli -h 192.168.10.32 -p 6379
192.168.10.32:6379> 

1.3 测试连接

192.168.10.32:6379> ping
PONG
192.168.10.32:6379> 
#如果连接正常,Redis会返回PONG

2 数据操作

2.1 字符串(String)操作

# 设置键值对
192.168.10.32:6379> set mykey test
OK
192.168.10.32:6379> 

# 获取键值
192.168.10.32:6379> get mykey
"test"
192.168.10.32:6379>

# 删除键
192.168.10.32:6379> del mykey
(integer) 1
192.168.10.32:6379>

# 自增操作192.168.10.32:6379> incr num
(integer) 1
192.168.10.32:6379> incr num
(integer) 2
192.168.10.32:6379> 

2.2 哈希(Hash)操作

# 设置哈希字段
192.168.10.32:6379> hset mykey:1 name test
(integer) 1
192.168.10.32:6379> hset mykey:1 age 18
(integer) 1
192.168.10.32:6379> 

# 获取哈希字段:
192.168.10.32:6379> hget mykey:1 name
"test"
192.168.10.32:6379> 

# 获取所有字段和值:
192.168.10.32:6379> hgetall mykey:1
1) "name"
2) "test"
3) "age"
4) "18"
192.168.10.32:6379> 

2.3 列表(List)操作

# 在列表头部插入元素:
192.168.10.32:6379> lpush mylist A
(integer) 1
192.168.10.32:6379> lpush mylist b
(integer) 2

# 获取列表元素:
192.168.10.32:6379> lrange mylist 0 1
1) "b"
2) "A"
192.168.10.32:6379> 

# 移除列表头部元素:
192.168.10.32:6379> lpop mylist
"b"
192.168.10.32:6379> 

2.4 集合(Set)操作

# 向集合中添加元素
192.168.10.32:6379> sadd myset test1
(integer) 1
192.168.10.32:6379> sadd myset test2
(integer) 1
192.168.10.32:6379> 

# 获取集合所有元素
192.168.10.32:6379> smembers myset
1) "test2"
2) "test1"
192.168.10.32:6379> 

# 移除集合元素
192.168.10.32:6379> srem myset test2
(integer) 1
192.168.10.32:6379> 

2.5 有序集合(Sorted Set)操作

# 向集合中添加元素
192.168.10.32:6379> sadd myset test1
(integer) 1
192.168.10.32:6379> sadd myset test2
(integer) 1
192.168.10.32:6379> 

# 获取集合所有元素
192.168.10.32:6379> smembers myset
1) "test2"
2) "test1"
192.168.10.32:6379> 

# 移除集合元素
192.168.10.32:6379> srem myset test2
(integer) 1
192.168.10.32:6379> 

3 事务管理

Redis支持事务操作,可以通过multi、exec、discard和watch命令实现。

3.1 开启事务

# 使用multi开启一个事务
192.168.10.32:6379> multi
OK
192.168.10.32:6379(TX)> 

3.2 添加命令

# 在事务中添加多个命令
192.168.10.32:6379(TX)> SET key1 "value1"
QUEUED
192.168.10.32:6379(TX)> SET key2 "value2"
QUEUED
192.168.10.32:6379(TX)> SET key3 "value3"
QUEUED
192.168.10.32:6379(TX)> 

3.3 执行事务

# 使用exec执行事务中的所有命令
192.168.10.32:6379(TX)> exec
1) OK
2) OK
3) OK
192.168.10.32:6379> 

3.4 取消事务

# 使用discard取消事务 
192.168.10.32:6379(TX)> discard 
OK 
192.168.10.32:6379>

3.5 监视键

# 使用watch监视一个或多个键
watch key2

4 其他常用命令

4.1 查找键(key)

192.168.10.32:6379> keys my*
1) "mylist"
2) "myset"
3) "mykey:1"
192.168.10.32:6379> 

4.2 检查键存在与否

192.168.10.32:6379> exists mylist
(integer) 1
192.168.10.32:6379> exists mylist1
(integer) 0
192.168.10.32:6379> 

4.3 设置键的过期时间

# 设置键的过期时间为20秒
192.168.10.32:6379> expire myset 20
(integer) 1
192.168.10.32:6379> 

4.4 服务器管理

192.168.10.32:6379> info
# Server
redis_version:6.2.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:51b2f0ae19044965
redis_mode:standalone
os:Linux 3.10.0-1160.el7.x86_64 x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:53724
process_supervised:no
run_id:c3606ae4a35cbdc171f9f075ebe76fbdd6900ffd
tcp_port:6379
server_time_usec:1742219662908912
uptime_in_seconds:1603
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:14166414
executable:/usr/local/redis/bin/redis-server
config_file:/usr/local/redis/redis.conf
io_threads_active:0

# Clients
connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:32
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0

# Memory
used_memory:876432
used_memory_human:855.89K
used_memory_rss:10223616
used_memory_rss_human:9.75M
used_memory_peak:933840
used_memory_peak_human:911.95K
used_memory_peak_perc:93.85%
used_memory_overhead:832832
used_memory_startup:811944
used_memory_dataset:43600
used_memory_dataset_perc:67.61%
allocator_allocated:1010864
allocator_active:1294336
allocator_resident:3657728
total_system_memory:8350650368
total_system_memory_human:7.78G
used_memory_lua:30720
used_memory_lua_human:30.00K
used_memory_scripts:0
used_memory_scripts_human:0B
number_of_cached_scripts:0
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:1.28
allocator_frag_bytes:283472
allocator_rss_ratio:2.83
allocator_rss_bytes:2363392
rss_overhead_ratio:2.80
rss_overhead_bytes:6565888
mem_fragmentation_ratio:12.26
mem_fragmentation_bytes:9389936
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_clients_slaves:0
mem_clients_normal:20512
mem_aof_buffer:0
mem_allocator:jemalloc-5.1.0
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0

# Persistence
loading:0
current_cow_size:0
current_cow_size_age:0
current_fork_perc:0.00
current_save_keys_processed:0
current_save_keys_total:0
rdb_changes_since_last_save:25
rdb_bgsave_in_progress:0
rdb_last_save_time:1742218059
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:0
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0
module_fork_in_progress:0
module_fork_last_cow_size:0

# Stats
total_connections_received:1
total_commands_processed:54
instantaneous_ops_per_sec:0
total_net_input_bytes:1705
total_net_output_bytes:21269
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:1
expired_stale_perc:0.00
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:782
evicted_keys:0
keyspace_hits:10
keyspace_misses:2
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
total_forks:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
tracking_total_keys:0
tracking_total_items:0
tracking_total_prefixes:0
unexpected_error_replies:0
total_error_replies:9
dump_payload_sanitizations:0
total_reads_processed:60
total_writes_processed:59
io_threaded_reads_processed:0
io_threaded_writes_processed:0

# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:0ac63a1f8a3568b526e0afc29620c8abcca1db98
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:5.480140
used_cpu_user:13.870195
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000
used_cpu_sys_main_thread:5.437573
used_cpu_user_main_thread:13.862361

# Modules

# Errorstats
errorstat_ERR:count=6
errorstat_WRONGTYPE:count=3

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=7,expires=0,avg_ttl=0
192.168.10.32:6379> 

4.5 清空当前数据库

flushdb

4.6 清空所有数据库

flushall

5 总结

通过本文的介绍,可以帮助你对Redis常用命令行操作有一定的了解,这些命令操作是使用Redis的基础,了解它们可以帮助你更好地管理和操作Redis数据。

相关文章:

  • QML与C++交互
  • Flink读取Kafka数据写入IceBerg(HiveCatalog)
  • 汽车一键启动系统使用方便,舒适出行,轻松匹配
  • Java 中线程废弃方法(stop、suspend、resume)原因及替代方案
  • 2025年春季学期《算法分析与设计》练习4
  • 碰一碰发视频saas系统技术源头一站式开发文档
  • Tomcat虚拟主机配置详解:Centos环境下多域名部署(详细教程!)
  • 输入输出 数组 冒泡排序举例
  • 基于Spring Boot的大学校园生活信息平台的设计与实现(LW+源码+讲解)
  • 机器学习之支持向量机(SVM)算法详解
  • docker 的volumes如何清理
  • SpringBoot的启动原理?
  • ubuntu中的ens33网卡在ifconfig中被默认关闭了?
  • c语言笔记 存储期
  • Topaz Photo AI for Mac v3.5.2图像质量增强 支持M、Intel芯片
  • python-列表的操作以及切片
  • 异常(完)
  • 计算GPS点之间距离(JS实现)
  • 从C语言开始的C++编程生活(1)
  • 第二十七篇 数据仓库与维度建模指南:从理论到实战的进阶之路
  • 李公明 | 一周画记:德里达哲学还是接地气的
  • 国家统计局答澎湃:我国投资的潜力依然巨大,支撑投资增长的有利因素仍然比较多
  • 茅台总经理到访五粮液:面对白酒行业周期性调整,需要团结一心的合力
  • 摄影师|伊莎贝尔·穆尼奥斯:沿着身体进行文化溯源
  • 俄乌代表团抵达谈判会场
  • 侵害孩子者,必严惩不贷!3名性侵害未成年人罪犯今日执行死刑