本文主要介绍Redis及redis-cli的使用方式,介绍redis操作中的一些常见的命令。
分为以下几个部分介绍:
- docker中的redis如何进入命令模式
- redis的常见命令及用法
- 有哪些比较好的redis连接工具
进入redis的命令模式
以下实例讲解了如何启动 redis 客户端:
启动 redis 服务器,打开终端并输入命令redis-cli
,该命令会连接本地的redis 服务。
1 2
| $ redis-cli redis 127.0.0.1:6379>
|
如果我们是使用的docker启动的redis,那该怎么办呢?比如下图中的imooc-redis

我们可以使用如下的命令进入redis的命令模式:

方便复制:
1
| docker exec -it imooc-redis redis-cli
|
这里的imooc-redis
可以换成自己的容器的名称
如果自己的redis设置的密码,则输入命令后会出现如下提示:

那么可以使用auth
命令进行登录鉴权:

redis的常见命令及用法
key操作命令
获取所有键
语法:keys pattern
1 2
| 127.0.0.1:6379> keys * 1) "toimc"
|
*
表示通配符,表示任意字符,会遍历所有键显示所有的键列表,时间复杂度O(n),在生产环境不建议使用。
获取键总数
语法:dbsize
1 2
| 127.0.0.1:6379> dbsize (integer) 6
|
获取键总数时不会遍历所有的键,直接获取内部变量,时间复杂度O(1)。
查询键是否存在
语法:exists key [key …]
1 2
| 127.0.0.1:6379> exists toimc java (integer) 2
|
查询查询多个,返回存在的个数。
删除键
语法:del key [key …]
1 2
| 127.0.0.1:6379> del java toimc (integer) 1
|
可以删除多个,返回删除成功的个数。
查询键类型
语法: type key
1 2
| 127.0.0.1:6379> type toimc string
|
移动键
语法:move key db
如把toimc移到2号数据库。
1 2 3 4 5 6
| 127.0.0.1:6379> move toimc 2 (integer) 1 127.0.0.1:6379> select 2 OK 127.0.0.1:6379[2]> keys * 1) "toimc"
|
查询key的生命周期(秒)
秒语法:ttl key
毫秒语法:pttl key
1 2
| 127.0.0.1:6379[2]> ttl toimc (integer) -1
|
-1:永远不过期。
设置过期时间
秒语法:expire key seconds
毫秒语法:pexpire key milliseconds
1 2 3 4
| 127.0.0.1:6379[2]> expire toimc 60 (integer) 1 127.0.0.1:6379[2]> ttl toimc (integer) 55
|
设置永不过期
语法:persist key
1 2
| 127.0.0.1:6379[2]> persist toimc (integer) 1
|
更改键名称
语法:rename key newkey
1 2
| 127.0.0.1:6379[2]> rename toimc toimc123 OK
|
字符串操作命令
字符串是Redis中最基本的数据类型,单个数据能存储的最大空间是512M。
存放键值
语法:set key value [EX seconds] [PX milliseconds] [NX|XX]
nx:如果key不存在则建立,xx:如果key存在则修改其值,也可以直接使用setnx/setex命令。
1 2
| 127.0.0.1:6379> set toimc 666 OK
|
获取键值
语法:get key
1 2
| 127.0.0.1:6379[2]> get toimc "666"
|
值递增/递减
如果字符串中的值是数字类型的,可以使用incr命令每次递增,不是数字类型则报错。
语法:incr key
1 2
| 127.0.0.1:6379[2]> incr toimc (integer) 667
|
一次想递增N用incrby命令,如果是浮点型数据可以用incrbyfloat命令递增。
同样,递减使用decr、decrby命令。
批量存放键值
语法:mset key value [key value …]
1 2
| 127.0.0.1:6379[2]> mset java1 1 java2 2 java3 3 OK
|
获取获取键值
语法:mget key [key …]
1 2 3
| 127.0.0.1:6379[2]> mget java1 java2 1) "1" 2) "2"
|
Redis接收的是UTF-8的编码,如果是中文一个汉字将占3位返回。
获取值长度
语法:strlen key
127.0.0.1:6379[2]> strlen toimc
(integer) 3
追加内容
语法:append key value
1 2
| 127.0.0.1:6379[2]> append toimc hi (integer) 5
|
向键值尾部添加,如上命令执行后由666变成666hi
获取部分字符
语法:getrange key start end
1 2
| > 127.0.0.1:6379[2]> getrange toimc 0 4 "javas"
|
散列操作命令
redis字符串类型键和值是字典结构形式,这里的散列类型其值也可以是字典结构。
存放键值
单个语法:hset key field value
1 2
| 127.0.0.1:6379> hset user name toimc (integer) 1
|
多个语法:hmset key field value [field value …]
1 2
| 127.0.0.1:6379> hmset user name toimc age 20 address china OK
|
不存在时语法:hsetnx key field value
1 2
| 127.0.0.1:6379> hsetnx user tall 180 (integer) 0
|
获取字段值
单个语法:hget keyfield
1 2
| 127.0.0.1:6379> hget user age "20"
|
多个语法:hmget key field [field …]
1 2 3 4
| 127.0.0.1:6379> hmget user name age address 1) "toimc" 2) "20" 3) "china"
|
获取所有键与值语法:hgetall key
1 2 3 4 5 6 7
| 127.0.0.1:6379> hgetall user 1) "name" 2) "toimc" 3) "age" 4) "20" 5) "address" 6) "china"
|
获取所有字段语法:hkeys key
1 2 3 4 5
| 127.0.0.1:6379> hkeys user 1) "name" 2) "address" 3) "tall" 4) "age"
|
获取所有值语法:hvals key
1 2 3 4 5
| 127.0.0.1:6379> hvals user 1) "toimc" 2) "china" 3) "170" 4) "20"
|
判断字段是否存在
语法:hexists key field
1 2
| 127.0.0.1:6379> hexists user address (integer) 1
|
获取字段数量
语法:hlen key
1 2
| 127.0.0.1:6379> hlen user (integer) 4
|
递增/减
语法:hincrby key fieldincrement
1 2
| 127.0.0.1:6379> hincrby user tall -10 (integer) 170
|
删除字段
语法:hdel key field [field …]
1 2
| 127.0.0.1:6379> hdel user age (integer) 1
|
数据库相关
Redis数据库的数量是固定的,并在配置文件中设置。默认情况下,你有16个数据库。每个数据库都由一个数字(而不是名称)来标识。
你可以使用以下命令CONFIG````GET````data``b``as``e``s
来了解数据库的数量:
1 2 3
| CONFIG GET databases 1) "databases" 2) "16"
|
也可以使用以下命令INFO
或者INFO keyspace
列出定义了某些键的数据库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| INFO # Server redis_version:5.0.8 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:ce75a617c591114f redis_mode:standalone os:Linux 3.10.0-1062.4.1.el7.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:8.3.0 process_id:1 run_id:75ea4375ee7a6f41697f721e268d148dc8af24e8 tcp_port:6379 uptime_in_seconds:7316762 uptime_in_days:84 hz:10 configured_hz:10 lru_clock:2935552 executable:/data/redis-server config_file: # Clients connected_clients:4 client_recent_max_input_buffer:2 client_recent_max_output_buffer:0 blocked_clients:0 # Memory used_memory:925608 used_memory_human:903.91K used_memory_rss:12644352 used_memory_rss_human:12.06M used_memory_peak:3896552 used_memory_peak_human:3.72M used_memory_peak_perc:23.75% used_memory_overhead:892348 used_memory_startup:791296 used_memory_dataset:33260 used_memory_dataset_perc:24.76% allocator_allocated:917808 allocator_active:1163264 allocator_resident:3743744 total_system_memory:16637751296 total_system_memory_human:15.50G used_memory_lua:37888 used_memory_lua_human:37.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.27 allocator_frag_bytes:245456 allocator_rss_ratio:3.22 allocator_rss_bytes:2580480 rss_overhead_ratio:3.38 rss_overhead_bytes:8900608 mem_fragmentation_ratio:14.31 mem_fragmentation_bytes:11760736 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:100460 mem_aof_buffer:0 mem_allocator:jemalloc-5.1.0 active_defrag_running:0 lazyfree_pending_objects:0 # Persistence loading:0 rdb_changes_since_last_save:7989 rdb_bgsave_in_progress:0 rdb_last_save_time:1606231526 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 # Stats total_connections_received:4006 total_commands_processed:81735 instantaneous_ops_per_sec:0 total_net_input_bytes:3084119 total_net_output_bytes:22777832 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:759 expired_stale_perc:0.00 expired_time_cap_reached_count:0 evicted_keys:0 keyspace_hits:63631 keyspace_misses:2192 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec: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 # Replication role:master connected_slaves:0 master_replid:7e9137e98814fa2b756aff0e339de997cc1309a1 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:8093.459923 used_cpu_user:4547.190025 used_cpu_sys_children:0.011915 used_cpu_user_children:0.003634 # Cluster cluster_enabled:0 # Keyspace db0:keys=7,expires=1,avg_ttl=177400
|
查看单个片区:
1 2 3 4 5
| INFO keyspace # Keyspace db0:keys=10,expires=0 db1:keys=1,expires=0 db3:keys=1,expires=0
|
或者使用redis的GUI工具来查看:

推荐redis学习文档
更多redis的命令可以参考如下网址:
[1] http://doc.redisfans.com/
[2] http://www.redis.cn/