专栏首页java程序员思维redis系列基础篇之常用命

redis系列基础篇之常用命

目录

1、字符串类型常用命令

2、list类型常用命令

3、集合类型常用命令

4、有序集合类型常用命令

5、hash类型常用命令

6、工作中常用命令

1、字符串类型常用命令

设置缓存set key value
获取缓存get key
删除keydel key
查询key过期时间 -1 永远不过期ttl key设置过期时间expire key 过期秒数
自增命令incr key
递减命令decr key
指定数量增加incrby key 数量指定数量递减decrby key 数量

2、list类型常用命令

将一个或多个值插入到列表头部lpush key values
移除列表的最后一个元素,返回值为移除的元素。rpop key
获取list长度llen key
队列实现

栈实现

3、集合类型常用命令

set中添加元素sadd key values
获取集合中的成员数scard key
获取集合中所有成员smembers key
移除集合中的指定成员srem key member1[member2]
随机移除其中的成员spop key

注意:从上图可以看出,set是一个无需集合

4、有序集合类型常用命令

有序集合添加成员zadd key score1 member1 [score2 member2]
获取集合中的成员数zcard key
获取成员的索引zrank key member
移除集合中的指定成员zrem key member1[member2]
获取区间的成员zrange key start end
返回member分数zscore key member

5、hash类型常用命令

批量map添加元素hmset key field value[field2 value2]
添加元素hset key field value
获取元素hget key field 
批量获取元素hmget key field[field2]
获取单个元素hget key field
获取所有的元素hgetall key
删除keyhdel key field
获取hash中所有的keyhkeys key

6、工作中常用命令

获取所有的key keys 通配符*

注意:不要在key很多的服务器中执行此命令,因为redis是单线程,如果key很多,会造成redis阻塞,影响服务性能。

获取redis的详细信息 info

server : 一般 Redis 服务器信息,包含以下域:redis_version : Redis 服务器版本redis_git_sha1 : Git SHA1redis_git_dirty : Git dirty flagos : Redis 服务器的宿主操作系统arch_bits : 架构(32 或 64 位)multiplexing_api : Redis 所使用的事件处理机制gcc_version : 编译 Redis 时所使用的 GCC 版本process_id : 服务器进程的 PIDrun_id : Redis 服务器的随机标识符(用于 Sentinel 和集群)tcp_port : TCP/IP 监听端口uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数uptime_in_days : 自 Redis 服务器启动以来,经过的天数lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理clients : 已连接客户端信息,包含以下域:connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)client_longest_output_list : 当前连接的客户端当中,最长的输出列表client_longest_input_buf : 当前连接的客户端当中,最大输入缓存blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
memory : 内存信息,包含以下域:used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位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 。在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。查看 used_memory_peak 的值可以验证这种情况是否发生。
persistence : RDB 和 AOF 的相关信息stats : 一般统计信息replication : 主/从复制信息cpu : CPU 计算量统计信息commandstats : Redis 命令统计信息cluster : Redis 集群信息keyspace : 数据库相关的统计信息
# Serverredis_version:2.6.14redis_git_sha1:00000000redis_git_dirty:0redis_mode:standaloneos:Linux 3.10.0-862.9.1.el7.x86_64 x86_64arch_bits:64multiplexing_api:epollgcc_version:4.8.5process_id:7115run_id:3792063e1c3d74529341886ee5ceaf09f517bc17tcp_port:6380uptime_in_seconds:5263uptime_in_days:0hz:10lru_clock:573953
# Clientsconnected_clients:1client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0
# Memoryused_memory:2933360used_memory_human:2.80Mused_memory_rss:9662464used_memory_peak:2933224used_memory_peak_human:2.80Mused_memory_lua:31744mem_fragmentation_ratio:3.29mem_allocator:jemalloc-3.2.0
# Persistenceloading:0rdb_changes_since_last_save:48rdb_bgsave_in_progress:0rdb_last_save_time:1557626749rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:-1rdb_current_bgsave_time_sec:-1aof_enabled:1aof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_current_size:1438aof_base_size:56aof_pending_rewrite:0aof_buffer_length:0aof_rewrite_buffer_length:0aof_pending_bio_fsync:0aof_delayed_fsync:0
# Statstotal_connections_received:13total_commands_processed:107instantaneous_ops_per_sec:0rejected_connections:0expired_keys:2evicted_keys:0keyspace_hits:30keyspace_misses:9pubsub_channels:0pubsub_patterns:0latest_fork_usec:0
# Replicationrole:masterconnected_slaves:0
# CPUused_cpu_sys:0.84used_cpu_user:0.56used_cpu_sys_children:0.00used_cpu_user_children:0.00
# Keyspacedb0:keys=5,expires=0

注意:redis出现异常情况的时候,会使用此命令查看redis的情况,去看内存使用情况等信息

批量删除key,使用通配符方式

redis-cli -h ip地址 KEYS "key*" | xargs redis-cli -h ip地址 DEL

当redis内存使用很大的时候,需要查找占用内存空间比较大的key

redis-cli -p 6380 --bigkeys -i 0.1

注意:查找大key是一个比较耗时的命令,记得使用-i 参数设置睡眠时间,降低服务器的负载。

命令是基础,学会常用命令,将其应用到适合的场景。这里只是罗列了一些工作中常用的命令,更多的命令到redis官网查看。

END

本文分享自微信公众号 - java程序员思维(java_python_go),作者:曾建路

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • redis系列之淘汰删除

    redis可以针对key设置过期时间,如果到了过期时间,redis是如何让其失效呢?redis提供了两种让key过期的方法,一种是主动删除,另一种被动删除。

    用户4361942
  • 主动和被动结合,结果是不是会更好?

    主动代表积极,被动代表消极,主动之人步步占领先机,被动之人处处受制于人。但很多情况我们是相对被动的,被动的同时,也请保留主动,结果可能会更好。

    用户4361942
  • java应用监控之调用链跟踪选型之Zipkin、Pinpoint、SkyWalking、CAT

    Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。

    用户4361942
  • 【一天一道Leetcode】设计哈希集合

    潘永斌
  • 深入理解分布式锁

    假设这里有一个分布式应用,它拥有多个客户端,每个客户端都会对存储在Redis中的数据进行计算并修改,计算的前提是获取到最新的数据,然后进行计算,最后写回Redi...

    itlemon
  • 如何将 Redis 用于微服务通信的事件存储

    原文链接:https://www.xttblog.com

    业余草
  • Spring Cloud(一)服务的注册与发现(Eureka)

    Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控...

    搜云库
  • 你都用过SpringCloud的哪些组件,它们的原理是什么?

    看到文章的题目了吗?就是这么抽象和笼统的一个问题,确实是我面试中真实被问到的,某共享货车平台的真实面试问题。 SpringCloud确实是用过,但是那是三四年...

    纪莫
  • 从 Spring Cloud 看懂一个微服务框架的「五脏六腑」

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件。

    芋道源码
  • 【译】《Understanding ECMAScript6》- 第一章-基础知识(一)

    目录: 更好的Unicode编码支持 codePointAt()函数 String.fromCodePoint() 用转义序列对Non-BMP字符编码 nor...

    寒月十八

扫码关注云+社区

领取腾讯云代金券