Redis 使用及命令操作

文章目录

      • 一、基本命令
      • 二、redis 设置键的生存时间或过期时间
      • 三、SortSet 排序集合类型操作
      • 四、查看中文
      • 五、密码设置和查看密码的方法
      • 六、关于 Redis 的 database 相关基础
      • 七、查看内存占用

一、基本命令

# 查看版本
redis-cli --version
结果:redis-cli 8.0.0redis-server --version
结果:Redis server v=8.0.0 sha=00000000:2 malloc=jemalloc-5.3.0 bits=64 build=5c6bfe0bdcb0538b#查看所有key
keys *  或  keys "*"#查看匹配前缀的keys
keys "miao*"#清空redis
flushdb#查看key的类型
type key#查看数据库中key的数量
dbsize#查看服务器信息
info#查看日志
slowlog get
slowlog get 10# 设置key的值,若存在则覆盖
set key value# 重命名
RENAME oldkey newkey# 向key的字符串追加拼接
append key value# 获取key对应的值 MGET key1 key2 ... keyN:获取这些key对应的值
get key# 查看是否存在该元素
EXISTS key# 删除元素
del key

参考:redis学习教程之一基本命令

二、redis 设置键的生存时间或过期时间

# 设置该元素多少秒后失效
EXPIRE key seconds# 设置该元素多少毫秒后失效
PEXPIRE key milliseconds# 查看还可以存活多少秒,-2表示key不存在,-1表示永久存储
TTL key# 取消过期时间
persist key# unix时间戳,1970.1.1之后,这个绝对时间,将在这个时间删除key。expireat pages:about 1356933600:在2012年12月31日上午12点删除掉关键字
expireat key 时间戳

参考:redis设置键的生存时间或过期时间

  Java 实现:

import redis.clients.jedis.Jedis;public class RedisExpireExample {public static void main(String[] args) {// 连接到Redis服务器Jedis jedis = new Jedis("localhost", 6379);try {// 设置键 "key" 的值为 "value"jedis.set("key", "value");// 设置键 "key" 的过期时间为60秒jedis.expire("key", 60);// 打印键 "key" 的剩余生存时间System.out.println("剩余生存时间:" + jedis.ttl("key"));} finally {// 关闭连接jedis.close();}}
}

三、SortSet 排序集合类型操作

  创建一个 sort set 排序集合:

127.0.0.1:6379> zadd b3ebc2e6 0.1 id10
(integer) 1
127.0.0.1:6379> zadd b3ebc2e6 0.5 id11
(integer) 1
127.0.0.1:6379> zadd b3ebc2e6 2.1 id12
(integer) 1
127.0.0.1:6379> zadd b3ebc2e6 0.7 id13
(integer) 1

  我们按照权值从大到小逆序排序显示一下我们的数据:

127.0.0.1:6379> zrevrange b3ebc2e6 0 100
1) "id12"
2) "id13"
3) "id11"
4) "id10"

  我们要删除回复量最低的数据(从小到大的排序后,删除区间为0到0的元素,也就是0本身):

127.0.0.1:6379> zremrangebyrank b3ebc2e6 0 0
(integer) 1
127.0.0.1:6379> zrevrange b3ebc2e6 0 100
1) "id12"
2) "id13"
3) "id11"

  想查看某一个权值数据的排名(zrank 从小到大,zrevrank 从大到小),使用 zrank 指令:

127.0.0.1:6379> zrank b3ebc2e6 id11
(integer) 0
127.0.0.1:6379> zrank b3ebc2e6 id13
(integer) 1
127.0.0.1:6379> zrank b3ebc2e6 id12
(integer) 2
127.0.0.1:6379> zrevrank b3ebc2e6 id11
(integer) 2

  zcard 指令可以返回 SortSet 集合中的元素个数:

127.0.0.1:6379> zcard b3ebc2e6
(integer) 3

  zincrby 指令增加某个权值下的数值,我们给 id11 的数据加 200:

127.0.0.1:6379> zincrby b3ebc2e6 200 id11
"200.5"
127.0.0.1:6379> zrevrange b3ebc2e6 0 100
1) "id11"
2) "id12"
3) "id13"

  最后,想查看某个权值对应的数据值,使用 zscore 就可以了:

127.0.0.1:6379> zscore b3ebc2e6 id12
"2.1000000000000001"

参考:
【Redis缓存机制】7.SortSet排序集合类型操作
Redis sort 排序命令详解

四、查看中文

  Redis 在使用命令行操作时,如果查看内容中包含中文,会显示16进制的字符串 \xe4\xb8\xad\xe5\x9b\xbd

127.0.0.1:6379> set k1 '中国'
OK
127.0.0.1:6379> get k1
"\xe4\xb8\xad\xe5\x9b\xbd"# 解决:
redis-cli 后面加上–-raw
$ redis-cli --raw
127.0.0.1:6379> get k1
中国

五、密码设置和查看密码的方法

  redis 没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑 redis.conf 配置来启用认证。

  1. 初始化 Redis 密码:

  在配置文件中有个参数:requirepass 这个就是配置 redis 访问密码的参数; 比如 requirepass test123;(Ps:需重启 Redis 才能生效) redis 的查询速度是非常快的,外部用户一秒内可以尝试多大150K个密码;所以密码要尽量长(对于DBA 没有必要必须记住密码);

  2. 不重启Redis设置密码:

# 设置密码
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
# 查询密码
127.0.0.1:6379> config set requirepass 123456
OK
127.0.0.1:6379> config get requirepass
(error) NOAUTH Authentication required.
# 密码验证
127.0.0.1:6379> auth 123456
OK
# 再次查询
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123456"
# PS:如果配置文件中没添加密码 那么redis重启后,密码失效;

  3. 登陆有密码的 Redis

# 在登录的时候的时候输入密码
redis-cli -h 127.0.0.1 -p 6379 -a 123456# 先登陆后验证
redis-cli -p 6379
redis 127.0.0.1:6379> auth 123456
OK

  AUTH 命令跟其他 redis 命令一样,是没有加密的;阻止不了攻击者在网络上窃取你的密码;

  认证层的目标是提供多一层的保护。如果防火墙或者用来保护 redis 的系统防御外部攻击失败的话,外部用户如果没有通过密码认证还是无法访问 redis 的。

参考:Redis 密码设置和查看密码的方法

六、关于 Redis 的 database 相关基础

  Redis 默认提供了16个数据库(database),每个数据库有一个 id,从0到15,他们没有名字,只有 id。

  可以在 Redis 配置文件中修改数据库个数,使用以下配置:

# 代表启动时提供32个数据库
databases 32

  客户端登录 Redis 时默认登录的是 id 为 0 的数据库。不同的数据库中数据隔离保存。使用select id命令可以切换当前数据库,比如:

在这里插入图片描述
  切换数据库后 Redis 命令行会有数据库 id 的标识,另外,0号数据库不显示标识。FLUSHALL 命令会清空所有数据库中的数据库,不只是当前数据库。

  spring-boot 可以在配置文件中设置默认登录的数据库(这样默认登录的数据库就是 5):

spring.redis.database=5

参考:关于Redis的database相关基础

七、查看内存占用

  要查看 Redis 的内存占用情况,可以通过以下几种方式进行操作:

  INFO memory : 该命令会返回一个包含内存相关信息的文本,其中包括 used_memory 字段表示已使用内存的大小,used_memory_human 字段表示已使用内存的大小(以人类可读的格式显示)。

  MEMORY STATS:该命令会返回一个包含详细内存统计信息的文本,其中包括 used_memory 字段表示已使用内存的大小,used_memory_human 字段表示已使用内存的大小(以人类可读的格式显示)。

127.0.0.1:6379> INFO memory
# Memory
used_memory:4952568
used_memory_human:4.72M
used_memory_rss:7786496
used_memory_rss_human:7.43M
used_memory_peak:5754256
used_memory_peak_human:5.49M
used_memory_peak_perc:86.07%
used_memory_overhead:1616328
used_memory_startup:865968
used_memory_dataset:3336240
used_memory_dataset_perc:81.64%
allocator_allocated:5176184
allocator_active:6045696
allocator_resident:9076736
total_system_memory:33566556160
total_system_memory_human:31.26G
used_memory_lua:31744
used_memory_vm_eval:31744
used_memory_lua_human:31.00K
used_memory_scripts_eval:0
number_of_cached_scripts:0
number_of_functions:0
number_of_libraries:0
used_memory_vm_functions:32768
used_memory_vm_total:64512
used_memory_vm_total_human:63.00K
used_memory_functions:184
used_memory_scripts:184
used_memory_scripts_human:184B
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:1.17
allocator_frag_bytes:869512
allocator_rss_ratio:1.50
allocator_rss_bytes:3031040
rss_overhead_ratio:0.86
rss_overhead_bytes:-1290240
mem_fragmentation_ratio:1.57
mem_fragmentation_bytes:2834128
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_total_replication_buffers:0
mem_clients_slaves:0
mem_clients_normal:43608
mem_cluster_links:0
mem_aof_buffer:0
mem_allocator:jemalloc-5.3.0
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0
127.0.0.1:6379> MEMORY STATS1) "peak.allocated"2) (integer) 57542563) "total.allocated"4) (integer) 50066885) "startup.allocated"6) (integer) 8659687) "replication.backlog"8) (integer) 09) "clients.slaves"
10) (integer) 0
11) "clients.normal"
12) (integer) 95216
13) "cluster.links"
14) (integer) 0
15) "aof.buffer"
16) (integer) 0
17) "lua.caches"
18) (integer) 0
19) "functions.caches"
20) (integer) 184
21) "db.2"
22) 1) "overhead.hashtable.main"2) (integer) 4054323) "overhead.hashtable.expires"4) (integer) 2649445) "overhead.hashtable.slot-to-keys"6) (integer) 0
23) "db.10"
24) 1) "overhead.hashtable.main"2) (integer) 361923) "overhead.hashtable.expires"4) (integer) 05) "overhead.hashtable.slot-to-keys"6) (integer) 0
25) "overhead.total"
26) (integer) 1667936
27) "keys.count"
28) (integer) 7559
29) "keys.bytes-per-key"
30) (integer) 547
31) "dataset.bytes"
32) (integer) 3338752
33) "dataset.percentage"
34) "80.63216400146484"
35) "peak.percentage"
36) "87.00843048095703"
37) "allocator.allocated"
38) (integer) 5235728
39) "allocator.active"
40) (integer) 6098944
41) "allocator.resident"
42) (integer) 9129984
43) "allocator-fragmentation.ratio"
44) "1.164870262145996"
45) "allocator-fragmentation.bytes"
46) (integer) 863216
47) "allocator-rss.ratio"
48) "1.4969778060913086"
49) "allocator-rss.bytes"
50) (integer) 3031040
51) "rss-overhead.ratio"
52) "0.8716913461685181"
53) "rss-overhead.bytes"
54) (integer) -1171456
55) "fragmentation"
56) "1.5896047353744507"
57) "fragmentation.bytes"
58) (integer) 2951920

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java大师成长计划之第13天:Java中的响应式编程

📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4o-mini模型辅助创作完成,旨在提供灵感参考与技术分享,文中关键数据、代码与结论建议通过官方渠道验证。 随着现代应用程序的复杂性增加&…

华为私有协议Hybrid

实验top图 理论环节 1. 基本概念 Hybrid接口: 支持同时处理多个VLAN流量,且能针对不同VLAN配置是否携带标签(Tagged/Untagged)。 核心特性: 灵活控制数据帧的标签处理方式,适用于复杂网络场景。 2. 工作…

K8s 常用命令、对象名称缩写汇总

K8s 常用命令、对象名称缩写汇总 前言 在之前的文章中已经陆续介绍过 Kubernetes 的部分命令,本文将专题介绍 Kubernetes 的常用命令,处理日常工作基本够用了。 集群相关 1、查看集群信息 kubectl cluster-info # 输出信息Kubernetes master is run…

【HDLBits刷题】Verilog Language——1.Basics

目录 一、题目与题解 1.Simple wire(简单导线) 2.Four wires(4线) 3.Inverter(逆变器(非门)) 4.AND gate (与门) 5. NOR gate (或非门&am…

C语言|递归求n!

C语言| 函数的递归调用 【递归求n!】 0!1; 1!1 n! n*(n-1)*(n-2)*(n-3)*...*3*2*1; 【分析过程】 定义一个求n&#xff01;的函数&#xff0c;主函数直接调用 [ Factorial()函数 ] 1 用if语句去实现&#xff0c;把求n!的情况列举出来 2 if条件有3个&#xff0c;n<0; n0||n…

Android第四次面试总结之Java基础篇(补充)

一、设计原则高频面试题&#xff08;附大厂真题解析&#xff09; 1. 单一职责原则&#xff08;SRP&#xff09;在 Android 开发中的应用&#xff08;字节跳动真题&#xff09; 真题&#xff1a;“你在项目中如何体现单一职责原则&#xff1f;举例说明。”考点&#xff1a;结合…

OpenHarmony GPIO应用开发-LED

学习于&#xff1a; https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/driver/driver-platform-gpio-develop.md https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/driver/driver-platform-gpio-des.md 通过OpenHarmony官方文档指导可获知&#xff1a;芯片厂…

XILINX原语之——xpm_fifo_async(异步FIFO灵活设置位宽、深度)

目录 一、"fwft"模式&#xff08;First-Word-Fall-Through read mode&#xff09; 1、写FIFO 2、读FIFO 二、"std"模式&#xff08;standard read mode&#xff09; 1、写FIFO 2、读FIFO 调用方式和xpm_fifo_sync基本一致&#xff1a; XILINX原语之…

系统学习算法:动态规划(斐波那契+路径问题)

题目一&#xff1a; 思路&#xff1a; 作为动态规划的第一道题&#xff0c;这个题很有代表性且很简单&#xff0c;适合入门 先理解题意&#xff0c;很简单&#xff0c;就是斐波那契数列的加强版&#xff0c;从前两个数变为前三个数 算法原理&#xff1a; 这五步可以说是所有…

《让内容“活”起来:Flutter社交应用瀑布流布局的破界实践》

用户动态的展示方式如同舞台的布景&#xff0c;直接影响着观众——用户的体验。而瀑布流布局&#xff0c;以其独特的美感和高效的信息展示能力&#xff0c;成为众多社交应用的心头好。当我们滑动着Instagram、Pinterest&#xff0c;或是国内热门的小红书&#xff0c;那种内容如…

微机控制技术复习【一】

填空题&#xff1a; 简答题&#xff1a; 1、什么是计算机控制系统?其典型形式有哪些? 2、给出 DDC &#xff08;直接数字控制&#xff09;控制系统结构框图&#xff0c;并说明各组成部分的作用&#xff1f; 3、采样周期选择的理论依据是什么?工程应用中应如何选择?选择采样…

前端学习基础—VScode环境配置及html基础知识

作为初学者&#xff0c;一个好的开发环境能极大地提高理解与学习的效率&#xff0c;本文分享我的VScode环境配置方法&#xff0c;涵盖插件、主题、快捷键等&#xff0c;希望能助你快速搭建舒适边界的前端学习环境。 一、VSCode环境配置 首先找到vscode插件商店&#xff0c;在这…

【一】 基本概念与应用领域【830数字图像处理】

考纲 文章目录 1 概念2005甄题【名词解释】2008、2012甄题【名词解释】可考题【简答题】可考题【简答题】 2 应用领域【了解】2.1 伽马射线成像【核医学影像】☆2.2 X射线成像2.3 紫外波段成像2.4 可见光和红外波段成像2.5 微波波段成像2.6 无线电波段成像2.7 电子显微镜成像2…

QuecPython错误码汇总

QuecPython中定义的各种错误代码常量 错误码常量错误码释义QUEC_PY_FAIL-1Generic failure codesQUEC_PY_OK0Quec_py value indicating success (no error)QUEC_PY_EPERM1Operation not permittedQUEC_PY_ENOENT2No such file or directoryQUEC_PY_ESRCH3No such processQUEC_…

C++学习-入门到精通-【4】函数与递归入门

C学习-入门到精通-【4】函数与递归入门 函数与递归入门 C学习-入门到精通-【4】函数与递归入门一、 数学库函数sqrt()ceil()cos()exp()fabs()floor()fmod()log()log10()pow()sin()tan()总结 二、具有多个形参的函数定义三、函数原型、函数签名和实参的强制类型转换函数原型函数…

天线测试报告解读学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、无源测试和有源测试二、无源测试报告1.驻波2.回损3.史密斯圆图4.效率5.增益6.天线方向图7.天线隔离度8.无源测试总结 三、有源测试报告1.TRP与TIS2.测试指标…

GEC6818蜂鸣器驱动开发

相关知识&#xff1a;Linux设备驱动开发 insmod 编译好的.ko文件后再运行beep_app.c编译完成的可执行文件即可使板子蜂鸣。 beep_drv.c: #include <linux/module.h> //包含了加载模块时需要使用的大量符号和函数声明 #include <linux/kernel.h> //包含了printk内…

电脑定时管家!Wise Auto Shutdown 深度测评:多任务执行 + 灵活定时

各位电脑小达人&#xff0c;今天给大家介绍一款超厉害的Windows系统定时任务管理工具——Wise Auto Shutdown&#xff01;这玩意儿就像电脑的贴心小管家&#xff0c;能自动执行关机、重启这些操作&#xff0c;时间设定灵活得很&#xff0c;还有提醒机制呢。下面我给大家好好唠唠…

vscode 配置qt

工具&#xff1a;vscode、qttools、qtconfigure Search Mode改成基于cmake的。 # 在项目中指定Qt的路径 set(Qt5_DIR "/home/jp/qt-everywhere-src-5.12.9/arm-qt/lib/cmake/Qt5") # 用于指定 Qt5 的安装路径 find_package(Qt5 REQUIRED COMPONENTS Widgets)这样就…

基于Boost库、Jsoncpp、cppjieba、cpp-httplib等构建Boost搜索引擎

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;项目 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 项目背景技术栈和项目环境正排索引和倒排索引数据去标签与清洗下载数据源去标签 建立索引构建正排索引构建倒排索引 建立搜索引擎h…