Java学习 - Redis下载安装及常用使用技巧

下载|安装

  • 下载redis

    https://redis.io/download
    
  • 安装路径为/usr/local/redis

    sudo mv redis /usr/local/redis
    cd /usr/local/redis
    sudo make && sudo make install
    

配置|启动|连接

  • 配置新的redis-server,其端口号为6789,以守护线程,工作目录为"/home/narlinen",日志文件名为"log-6789.log"
vim conf/redis-6789.conf
daemonize yes
port 6789
dir "/home/narlinen"
logfile "log-6789.log"
  • 用三种方式启动redis-server
src/redis-server
src/redis-server --port 6666
src/redis-server conf/redis-6666.conf
  • 查看是否成功启动redis-server
ps -ef | grep redis
  • 使用redis-cli连接redis-server,测试是否连接成功,最后并退出
src/redis-cli -h 127.0.0.1 -p 6666
127.0.0.1:6666> ping
127.0.0.1:6666> exit
  • 关闭redis-server
src/redis-cli -p 6666 shutdown

通用命令

  • 设置 hello-world,hehe-haha,hen-cow

    mset hello world hehe haha hen cow
    
  • 查询redis中he*的键

    keys he*
    
  • 查询hehe的类型

    type hehe
    
  • 查询数据库中key的数量

    dbsize
    
  • 为hehe设置过其时间200秒

    expire hehe 200
    
  • 查看hehe剩余过期时间

    ttl hehe
    
  • 清除hehe过期时间

    persist hehe
    
  • 为hen设置过其时间60秒

    expire hen 60
    
  • 查看hen是否存在

    exists hen
    
  • 60秒后再次查看hen是否存在

    exists hen
    
  • 把hello,hehe,hen都删除

    del hello hehe hen
    
  • 查询数据库中key的数量

    dbsize
    

string类型

  • 设置name-narlinen
set name narlinen
  • 批量设置age-20,gender-male,color-red
mset age 20 gender male color red
  • 获取gender前3个字母
getrange gender 0 2
  • 将gender第2个字母设置为z,并查看
setrange gender 1 z
get gender
  • 在不存在times的前提下,设置times-0
setnx times 0
  • 在存在times的前提下,设置times-11
set times 11 xx
  • 获取name的值
get name
  • 批量获取age,gender,color的值
mget age gender color
  • 使times自增1,使times自减1
incr times
decr times
  • 使times增加2,使times减少2
incrby times 2
decrby times 2
  • 使times增加1.5,使times减少1.5
incrbyfloat times 1.5
incrbyfloat times -1.5
  • 先获取times的值,再设置为10
getset times 10
  • 获取name的长度
strlen name
  • 追加name后面"-abc"
append name -abc
  • 删除name,age,gender,color,times
del name age gender color times

hash类型

  • 设置hash : person1:name narlinen
hset person1 name narlinen
  • 批量设置hash : person1:age 20,gender male,color red
hmset person1 age 20 gender male color red
  • 确保person1中times不存在时,设置times 10
hsetnx person1 times 10
  • 使times自增1,使times自减1
hincrby person1 times 1
hincrby person1 times -1
  • 使times增加2,使times减少2
hincrby person1 times 2
hincrby person1 times -2
  • 使times增加1.5,使times减少1.5
hincrbyfloat person1 times -1.5
hincrbyfloat person1 times -1.5
  • 获取hash-person1:name
hget person1 name
  • 批量获取hash-person1:age,gender,color
hmget person1 age gender color
  • 获取hash-person1的键个数
hlen person1
  • 判断hash-person1中是否存在键name和book
hexists person1 name
hexists person1 book
  • 获取hash-person1中所有键值对
hgetall person1
  • 获取hash-person1中所有键
hkeys person1
  • 获取hash-person1中所有值
hvals person1
  • 删除person1中的name,age,gender,color,times
hdel person1 name age gender color times
  • 删除person1
del person1

list类型

  • 以左插入创建列表lista,内容为a->b->c->d->e->f->g->h,并查看
lpush lista h g f e d c b a
lrange lista 0 -1
  • 以右插入创建列表listb,内容为a->b->c->d->e->f->g->h,并查看
rpush listb a b c d e f g h
lrange listb 0 -1
  • 在lista的f元素前插入before_f,并查看
linsert lista before b before_b
  • 在listb的f元素后插入after_f,并查看
linsert listb after b after_b
  • 弹出lista的最左元素,并查看
lpop lista
  • 弹出listb的最右元素,并查看
rpop listb
  • 阻塞3秒后弹出lista的b最左元素,并查看
blpop lista 3000
  • 阻塞3秒后弹出listb的最右元素,并查看
brpop listb 3000
  • 查看lista,再修改其第二个元素为new2,并查看
lrange lista 0 -1
lset lista 1 new2
lrange lista 0 -1
  • 获取lista中索引为1的元素
lindex lista 1
  • 获取lista的长度
llen lista
  • 删除lista的before_f,并查看
lrem lista 1 before_f
  • 删除listb的after_f,并查看
lrem listb -1 after_f
  • 查看listb,然后删除listb的头尾两个元素,并查看
lrange listb 0 -1
ltrim listb 1 -2
lrange listb 0 -1
  • 删除lista和listb
del lista listb

set类型

  • 创建集合seta,内容为a,b,c,d
sadd seta a b c d
  • 创建集合setb,内容为d,e,f,g
sadd setb d e f g
  • 获取集合seta的元素个数
scard seta
  • 判断e是否为seta和setb的成员
sismember seta e
sismember setb e
  • 随机选出seta的一个元素
srandmember seta
  • 获取seta中所有的元素
smembers seta
  • 查看seta和setb的交集,然后保存为setabinter
sinter seta setb
sinterstore setabinter seta setb
  • 查看seta和setb的并集,然后保存为setabunion
sunion seta setb
sunionstore setabunion seta setb
  • 查看seta和setbd的差集,然后保存为setabdiff
sdiff seta setb
sdiffstore setabdiff seta setb
  • 删除setb的d元素
srem setb d
  • 删除seta和setb
del seta setb

zset类型

  • 创建zset myzset,内容为1 narlinen 2 mafuyu 3 miuna 4 random
zadd myzset 1 narlinen 2 mafuyu 3 miuna 4 random
  • 获取myzset的个数
zcard myzset
  • 删除random
zrem myzset random
  • 获取narlinen的score
zscore myzset narlinen

RDB

  • 设置redis-7654中rdb文件名为dump-7654.rdb,开启rdb压缩,开启校验和,设置出错时停止
rdbfilename dump-7654.rdb
rdbcompression yes
rdbchecksum yes
stop-writes-on-bgsave-error yes
  • 连接redis-7654,设置键值对name-narlinen,并save,然后设置name为other
>> redis-server 7654.conf
>> redis-cli -h 127.0.0.1 -p 7654
127.0.0.1:7654> set name narlinen
127.0.0.1:7654> save
127.0.0.1:7654> set name other
  • 关闭redis-7654,重新打开redis-7654,查看name的值是不是narlinen
127.0.0.1:7654> exit
>> redis-cli -h 127.0.0.1 -p 7654 shutdown
>> redis-server 7654.conf
>> redis-cli -h 127.0.0.1 -p 7654
127.0.0.1:7654> get name
  • 删除dump-7654.rdb,重连查看name是否存在
127.0.0.1:7654> exit
>> redis-cli -h 127.0.0.1 -p 7654 shutdown
>> rm -rf dump-7654.rdb
>> redis-server 7654.conf
>> redis-cli -h 127.0.0.1 -p 7654
127.0.0.1:7654> get name
  • 设置键值对age-20,并bgsave,然后设置age为30
127.0.0.1:7654> set age 20
127.0.0.1:7654> bgsave
127.0.0.1:7654> set age 30
  • 退出redis-4567,重新打开redis-4567,查看age是不是20
127.0.0.1:7654> exit
>> redis-cli -h 127.0.0.1 -p 7654 shutdown
>> redis-server 7654.conf
>> redis-cli -h 127.0.0.1 -p 7654
127.0.0.1:7654> get age
  • 删除dump-7654.rdb,设置配置每60秒有1条命令就进行rbd持久化
127.0.0.1:7654> exit
>> redis-cli -h 127.0.0.1 -p 7654 shutdown
>> rm -rf dump-7654.rdb
>> vim 7654.conf
>>>> save 60 1
  • 设置键值对 gender-male,退出重连,查看gender是不是male
>> redis-server 7654.conf
>> redis-cli -h 127.0.0.1 -p 7654
127.0.0.1:7654> set gender male
127.0.0.1:7654> exit
>> redis-cli -h 127.0.0.1 -p 7654 shutdown
>> redis-server 7654.conf
>> redis-cli -h 127.0.0.1 -p 7654
127.0.0.1:7654> get gender

AOF

  • 开启AOF,AOF文件名为9999.aof,模式为每条命令都记录,重写时不追加新命令,自动重写尺寸为64MB,自动重写增长率为100

    appendonly yes
    appendfilename 9999.aof
    appendfsync always
    no-appendfsync-on-rewrite yes
    auto-aof-rewrite-min-size 64mb
    auto-aof-rewrite-percentage 100
    
  • 开启redis-9999,连接redis-9999,设置键值对name-narlinen,退出redis,关闭redis-9999

    >> redis-server 9999.conf
    >> redis-cli -h 127.0.0.1 -p 9999
    127.0.0.1:9999> set name narlinen
    127.0.0.1:9999> exit
    >> redis-cli -h 127.0.0.1 -p 9999 shutdown
    
  • 重新开启redis-9999,查看name是否存在

    >> redis-server 9999.conf
    >> redis-cli -h 127.0.0.1 -p 9999
    127.0.0.1:9999> get name
    

慢查询

  • 配置慢查询队列长度为100

    slowlog-max-len 100
    
  • 配置命令时间超过10毫秒算慢命令

    slowlog-log-slower-than 10000
    
  • 启动redis-server,连接到该server,然后修改慢查询队列长度为200,超时时间为0

    redis-server configurations/6666.conf
    redis-cli -h 127.0.0.1 -p 6666
    127.0.0.1:6666> config set slowlog-max-len 200
    127.0.0.1:6666> config set slowlog-log-slower-than 0
    
  • 写入键值对 hello-world,today-tomorrow,读取hello的值

    127.0.0.1:6666> set hello world
    127.0.0.1:6666> set today tomorrow
    127.0.0.1:6666> get hello
    
  • 查询此时慢查询队列中元素个数

    127.0.0.1:6666> slowlog len
    
  • 查询每个慢查询元素的信息

    127.0.0.1:6666> slowlog get[0]
    127.0.0.1:6666> slowlog get[1]
    127.0.0.1:6666> slowlog get[2]
    
  • 清空慢查询队列,再次查看队列中元素个数

    127.0.0.1:6666> slowlog reset
    127.0.0.1:6666> slowlog len
    

发布订阅

  • 创建3个client,A,B,C,其中A订阅voice:of:redis,B订阅voice:of:nosql,C两个都订阅

    127.0.0.1:6666(client-A)> subscribe voice:of:redis
    127.0.0.1:6666(client-B)> subscribe voice:of:nosql
    127.0.0.1:6666(client-C)> subscribe voice:of:redis
    127.0.0.1:6666(client-C)> subscribe voice:of:nosql
    
  • voice:of:redis发布信息"I’m voice of redis",voice:of:nosql发布信息"I’m voice of nosql",观察A,B,C的状态

    127.0.0.1:6666(D)> publish voice:of:redis "I'm voice of redis"
    127.0.0.1:6666(D)> publish voice:of:nosql "I'm voice of nosql"
    
  • C取消订阅voice:of:nosql,voice:of:redis和voice:of:nosql都再次发布刚刚的信息,观察C的状态

    127.0.0.1:6666(client-C)> unsubscribe voice:of:nosql
    127.0.0.1:6666(client-1)> publish voice:of:redis
    127.0.0.1:6666(client-2)> publish voice:of:nosql
    
  • 查询有订阅者的频道,并查看各自有多少人订阅

    127.0.0.1:6666(D)> pubsub channels
    127.0.0.1:6666(D)> pubsub numsub voice:of:redis
    127.0.0.1:6666(D)> pubsub numsub voice:of:nosql
    

主从复制

  • 开启redis-6666,redis-7777,redis-8888,redis-9999

    >> redis-server 6666.conf
    >> redis-server 7777.conf
    >> redis-server 8888.conf
    >> redis-server 9999.conf
    
  • 分别设置 port-6666|66-66,port-7777|77-77,port-8888|88-88,port-9999|99-99

    127.0.0.1:6666> set port 6666
    127.0.0.1:6666> set 66 66 
    127.0.0.1:7777> set port 7777
    127.0.0.1:7777> set 77 77
    127.0.0.1:8888> set port 8888
    127.0.0.1:8888> set 88 88
    127.0.0.1:9999> set port 9999
    127.0.0.1:9999> set 99 99
    
  • 通过slaveof命令,将6666,7777,8888成为9999的从节点

    127.0.0.1:6666> slaveof 127.0.0.1 9999
    127.0.0.1:7777> slaveof 127.0.0.1 9999
    127.0.0.1:8888> slaveof 127.0.0.1 9999
    
  • 分别查看66,77,88是否还存在;查看是否有99;查看port

    127.0.0.1:6666> get 66
    127.0.0.1:6666> get 99
    127.0.0.1:6666> get port
    127.0.0.1:7777> get 77
    127.0.0.1:7777> get 99
    127.0.0.1:7777> get port
    127.0.0.1:8888> get 88
    127.0.0.1:8888> get 99
    127.0.0.1:8888> get port
    
  • 在redis-9999添加name-narlinen

    127.0.0.1:9999> set name narlinen
    
  • 查看redis-6666,redis-7777,redis-8888中是否存在name

    127.0.0.1:6666> get name
    127.0.0.1:7777> get name
    127.0.0.1:8888> get name
    
  • 在redis-9999中删除name

    127.0.0.1:9999> del name
    
  • 查看redis-6666,redis-7777,redis-8888中是否存在name

    127.0.0.1:6666> get name
    127.0.0.1:7777> get name
    127.0.0.1:8888> get name
    
  • 令 redis-6666取消跟随redis-9999

    127.0.0.1:6666> slaveof no one
    
  • 在redis-9999中加入键值对 age-20,分别在redis-6666,redis-7777,redis-8888中查看age

    127.0.0.1:9999> set age 20
    127.0.0.1:6666> get age
    127.0.0.1:7777> get age
    127.0.0.1:8888> get age
    
  • 通过slaveof ip port 的方式设置redis-6666,redis-7777,redis-8888为redis-9999的从节点

    slaveof 9999 127.0.0.1 # 6666.conf
    slaveof 9999 127.0.0.1 # 7777.conf
    slaveof 9999 127.0.0.1 # 8888.conf
    
  • 在redis-9999添加name-narlinen

    127.0.0.1:9999> set name narlinen
    
  • 查看redis-6666,redis-7777,redis-8888中是否存在name

    127.0.0.1:6666> get name
    127.0.0.1:7777> get name
    127.0.0.1:8888> get name
    
  • 在redis-9999中删除name

    127.0.0.1:9999> del name
    
  • 查看redis-6666,redis-7777,redis-8888中是否存在name

    127.0.0.1:6666> get name
    127.0.0.1:7777> get name
    127.0.0.1:8888> get name
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源分享:一套完整的直播购物系统源码

直播购物已经成为一种炙手可热的电商模式,吸引了无数商家和消费者的目光。对于开发者来说,构建一个功能齐全、用户体验优良的直播购物系统是一项复杂的任务。本文将分享一套完整的直播购物系统源码,帮助开发者快速搭建自己的直播购物平台。 …

基于springboot+vue+uniapp的语言课学习系统小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

在Centos上安装Lua不要用什么curl指令,这样获取到的压缩包不是gzip格式的

Lua 环境安装 | 菜鸟教程 (runoob.com) 在这一篇里,把这一行 换成 wget http://www.lua.org/ftp/lua-5.3.0.tar.gz 再去解压编译安装就对了。

ue5导航网格设置

AI使用导航网格进行移动,所以,先设置导航网格边界体积 2,使导航网格边界体积覆盖AI所需要的场景(绿色区域),x,y,z在这里都扩大到原来的10倍 3,打开actor的“启用tick并开始” 4&…

No module named ‘MySQLdb‘

python 运行代码的时候遇到No module named ‘MySQLdb’报错如何解决? 解决办法 如果没有安装可以先安装以下依赖库 pip install PyMySQL如果已经安装了PyMySQL,仍然报MySQLdb模块找不到,可以尝试安装以下依赖库。 pip install mysqlclient

二轴机器人装箱机:重塑物流效率,精准灵活,引领未来装箱新潮流

在现代化物流领域,高效、精准与灵活性无疑是各大企业追求的核心目标。而在这个日益追求自动化的时代,二轴机器人装箱机凭借其较佳的性能和出色的表现,正逐渐成为装箱作业的得力助手,引领着未来装箱新潮流。 一、高效:重…

【12】交易-“未花费交易输出”

1. 未花费交易输出 1.1 概念 未花费交易输出(unspent transactions output, UTXO)。未花费(unspent)指的是这个输出还没有被包含在任何交易的输入中,或者说没有被任何输入引用。 在交易结构示意图中,未花费的输出是:tx1, output 1;tx3, output 0;tx4, output 0。 1…

JavaScript原型对象和对象原型、原型继承、原型链

目录 1. 原型对象和对象原型2. 原型继承3. 原型链 1. 原型对象和对象原型 作用: 以前通过构造函数实例化的对象,每个实例化的对象的属性和方法都是独立的,会造成内存浪费。通过prototype对象原型能实现不同实例化对象共享公用的属性和方法,减…

Android 10.0 关于定制自适应AdaptiveIconDrawable类型的动态日历图标的功能实现系列一

1.前言 在10.0的系统rom定制化开发中,在关于定制动态时钟图标中,原系统是不支持动态日历图标的功能,所以就需要从新 定制动态时钟图标关于自适应AdaptiveIconDrawable类型的样式,就是可以支持当改变系统图标样式变化时,动态日历 图标的背景图形也跟着改变,所以接下来就来…

国产分布式数据库灾备高可用实现

最近在进行核心业务系统的切换演练测试,就在想一个最佳的分布式数据库高可用部署方案是如何保证数据不丢、系统可用的,做到故障时候可切换、可回切,并且业务数据的一致性。本文简要介绍了OceanBase数据库和GoldenDB数据库在灾备高可用的部署方…

Springboot ResourceLoader获取指定package目录下所有的类(get class in jar on Linux)

get class in jar on Linux Springboot ResourceLoader获取指定package目录下所有的类 PathMatchingResourcePatternResolver resolver new PathMatchingResourcePatternResolver();String pattern ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX ClassUtils.convertClas…

《概率论与数理统计》期末复习笔记_下

目录 第4章 随机变量的数字特征 4.1 数学期望 4.2 方差 4.3 常见分布的期望与方差 4.4 协方差与相关系教 第5章 大数定律和中心极限定理 5.1 大数定律 5.2 中心极限定理 第6章 样本与抽样分布 6.1 数理统汁的基本概念 6.2 抽样分布 6.2.1 卡方分布 6.2.2 t分布 6.…

join()方法——连接字符串、元组、列表和字典

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 join()方法用于连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串&#…

全球点赞第一起名大师颜廷利:是金子总会“花光”的

在物质世界的繁华背后,隐藏着一个深刻的真理:有形之物的分享会逐渐减少,而无形之物的传递却能不断增值。金钱、货币、银两这些商业领域的实体,往往激发出人类对更多财富的渴望和对资源枯竭的恐惧。这种恐惧源于资源的有限性&#…

CSDN写文章时需要上、下标字号怎么输?

上标:​^^,符号中间加字 下标:~~,符号中间加字 前题是用MD编辑器,不然白搭: 我是感觉CSDN这个文本编辑比较拉,非常想吐槽。

10_网络规划和管理

目录 网络拓扑结构 网络拓扑结构分类 层次化局域网模型 建筑物综合布线系统 网络管理命令 其他知识点汇总 网络地址翻译 默认网关 PPP 冲突域和广播域 网络拓扑结构 网络拓扑结构分类 网络拓扑结构按分布范围分类见表 网络拓扑结构按范围分类 网络分类 缩写 分布…

商场配电新思维:智能网关驱动的自动化管理系统

在商场配电室监控系统中,主要是以无线网络为载体,目的就是便于对变电站等实时监测与控制。其中,4G配电网关非常关键,可以将配电室系统终端上的信息数据及时上传到服务器,再由服务器下达控制指令到各模块中,…

git客户端工具之Github,适用于windows和mac

对于我本人,我已经习惯了使用Github Desktop,不同的公司使用的代码管理平台不一样,就好奇Github Desktop是不是也适用于其他平台,结果是可以的。 一、克隆代码 File --> Clone repository… 选择第三种URL方式,输入url &…

08 - matlab m_map地学绘图工具基础函数 - 绘制线、图例、添加文字注释等函数

08 - matlab m_map地学绘图工具基础函数 - 绘制线、图例、添加文字注释等函数 0. 引言1. 关于m_line2. 关于m_quiver3. 关于m_text4. 关于m_plot5. 结语 0. 引言 本篇介绍下m_map中添加绘制基础线(m_line、m_plot)、绘制箭头(m_quiver&#x…

探索数据赋能的未来趋势:嵌入式BI技术的挑战与突破

数据分析能力越来越成为消费者和企业的必备品应用程序,复杂程度各不相同,从简单地一个网页或门户上托管一个可视化或仪表板,到在一个云服务上实现数据探索、建模、报告和可视化创建的应用程序。BI的实现方式越来越多,无论规模大小…