精华内容
下载资源
问答
  • redis-cli --cluster 说明

    2021-07-23 17:38:48
    说明 Redis Cluster 在5.0之后取消了ruby脚本redis-trib.rb的支持(手动命令行添加集群的方式不变),集合到redis-cli里,避免了再安装ruby的... redis-cli--cluster help Cluster Manager Commands: ...

    说明 

    Redis Cluster 在5.0之后取消了ruby脚本 redis-trib.rb的支持(手动命令行添加集群的方式不变),集合到redis-cli里,避免了再安装ruby的相关环境。
    直接使用redis-clit的参数--cluster来取代。为方便后面查询就说明下如何使用该命令进行Cluster的创建和管理

    redis-cli --cluster help

    redis-cli --cluster help

    Cluster Manager Commands:

      create         host1:port1 ... hostN:portN   #创建集群

                     --cluster-replicas <arg>      #从节点个数

      check          host:port                     #检查集群

                     --cluster-search-multiple-owners #检查是否有槽同时被分配给了多个节点

      info           host:port                     #查看集群状态

      fix            host:port                     #修复集群

                     --cluster-search-multiple-owners #修复槽的重复分配问题

      reshard        host:port                     #指定集群的任意一节点进行迁移slot,重新分slots

                     --cluster-from <arg>          #需要从哪些源节点上迁移slot,可从多个源节点完成迁移,以逗号隔开,传递的是节点的node id,还可以直接传递--from all,这样源节点就是集群的所有节点,不传递该参数的话,则会在迁移过程中提示用户输入

                     --cluster-to <arg>            #slot需要迁移的目的节点的node id,目的节点只能填写一个,不传递该参数的话,则会在迁移过程中提示用户输入

                     --cluster-slots <arg>         #需要迁移的slot数量,不传递该参数的话,则会在迁移过程中提示用户输入。

                     --cluster-yes                 #指定迁移时的确认输入

                     --cluster-timeout <arg>       #设置migrate命令的超时时间

                     --cluster-pipeline <arg>      #定义cluster getkeysinslot命令一次取出的key数量,不传的话使用默认值为10

                     --cluster-replace             #是否直接replace到目标节点

      rebalance      host:port                                      #指定集群的任意一节点进行平衡集群节点slot数量

                     --cluster-weight <node1=w1...nodeN=wN>         #指定集群节点的权重

                     --cluster-use-empty-masters                    #设置可以让没有分配slot的主节点参与,默认不允许

                     --cluster-timeout <arg>                        #设置migrate命令的超时时间

                     --cluster-simulate                             #模拟rebalance操作,不会真正执行迁移操作

                     --cluster-pipeline <arg>                       #定义cluster getkeysinslot命令一次取出的key数量,默认值为10

                     --cluster-threshold <arg>                      #迁移的slot阈值超过threshold,执行rebalance操作

                     --cluster-replace                              #是否直接replace到目标节点

      add-node       new_host:new_port existing_host:existing_port  #添加节点,把新节点加入到指定的集群,默认添加主节点

                     --cluster-slave                                #新节点作为从节点,默认随机一个主节点

                     --cluster-master-id <arg>                      #给新节点指定主节点

      del-node       host:port node_id                              #删除给定的一个节点,成功后关闭该节点服务

      call           host:port command arg arg .. arg               #在集群的所有节点执行相关命令

      set-timeout    host:port milliseconds                         #设置cluster-node-timeout

      import         host:port                                      #将外部redis数据导入集群

                     --cluster-from <arg>                           #将指定实例的数据导入到集群

                     --cluster-copy                                 #migrate时指定copy

                     --cluster-replace                              #migrate时指定replace

      help          

    For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

    注意:Redis Cluster最低要求是3个主节点。如果需要密码认证,则在最后加入 -a xx 即可

    ① 创建集群主节点

    创建主节点

    redis-cli --cluster create 192.168.163.132:6379 192.168.163.132:6380 192.168.163.132:6381

    ② 创建集群主从节点

    创建主从节点

    /redis-cli --cluster create 192.168.163.132:6379 192.168.163.132:6380 192.168.163.132:6381 192.168.163.132:6382 192.168.163.132:6383 192.168.163.132:6384 --cluster-replicas 1

    --cluster-replicas 参数为数字,1表示每个主节点需要1个从节点。通过该方式创建的带有从节点的机器不能够自己手动指定主节点,所以如果需要指定的话,需要自己手动指定,先使用①或③创建好主节点后,再通过④来处理。

    ③ 创建集群主节点

    添加主节点

    redis-cli --cluster add-node 192.168.163.132:6382 192.168.163.132:6379

    说明:为一个指定集群添加节点,需要先连到该集群的任意一个节点IP(192.168.163.132:6379),再把新节点加入。该2个参数的顺序有要求:新加入的节点放前

    ④ 创建集群从节点

    创建从节点

    redis-cli --cluster add-node 192.168.163.132:6382 192.168.163.132:6379 --cluster-slave --cluster-master-id 117457eab5071954faab5e81c3170600d5192270

    说明:把6382节点加入到6379节点的集群中,并且当做node_id为 117457eab5071954faab5e81c3170600d5192270 的从节点。如果不指定 --cluster-master-id 会随机分配到任意一个主节点。

    ⑤ 删除节点

    删除节点

    redis-cli --cluster del-node 192.168.163.132:6384 f6a6957421b80409106cb36be3c7ba41f3b603ff

    说明:指定IP、端口和node_id 来删除一个节点,从节点可以直接删除,主节点(即使没有key)不能删除,从节点删除之后,会被shutdown。

    注意:当被删除掉的节点重新起来之后不能自动加入集群,但其和主的复制还是正常的,也可以通过该节点看到集群信息(通过其他正常节点已经看不到该被del-node节点的信息)。

    如果想要再次加入集群,则需要先在该节点执行cluster reset,再用add-node进行添加,进行增量同步复制。

    到此,目前整个集群的状态如下:

    集群状态

    192.168.163.132:6379> cluster nodes

    815da8448f5d5a304df0353ca10d8f9b77016b28 192.168.163.132:6380@16380 master - 0 1569748297177 2 connected 5461-10922

    0c21b6cee354594a23f4d5abf0d01b48bdc96d55 192.168.163.132:6383@16383 slave 56005b9413cbf225783906307a2631109e753f8f 0 1569748295000 4 connected

    3a1d04983ab6c4ae853f9602dd922d4ebadc4dbf 192.168.163.132:6382@16382 slave 815da8448f5d5a304df0353ca10d8f9b77016b28 0 1569748295000 5 connected

    117457eab5071954faab5e81c3170600d5192270 192.168.163.132:6379@16379 myself,master - 0 1569748297000 1 connected 0-5460

    56005b9413cbf225783906307a2631109e753f8f 192.168.163.132:6381@16381 master - 0 1569748295000 3 connected 10923-16383

    f6a6957421b80409106cb36be3c7ba41f3b603ff 192.168.163.132:6384@16384 slave 117457eab5071954faab5e81c3170600d5192270 0 1569748298185 6 connected

    ⑥ 检查集群

    检查

    redis-cli --cluster check 192.168.163.132:6384 --cluster-search-multiple-owners

    说明:任意连接一个集群节点,进行集群状态检查

    ⑦ 集群信息查看

    查看

    redis-cli --cluster info 192.168.163.132:6384

    说明:检查key、slots、从节点个数的分配情况

    ⑧ 修复集群

    修复

    redis-cli --cluster fix 192.168.163.132:6384 --cluster-search-multiple-owners

    ⑨ 设置集群的超时时间 

    设置超时

    redis-cli --cluster set-timeout 192.168.163.132:6382 10000

    说明:连接到集群的任意一节点来设置集群的超时时间参数cluster-node-timeout

    ⑩ 集群中执行相关命令

    执行命令

    redis-cli --cluster call 192.168.163.132:6381 config set requirepass cc

    redis-cli -a cc --cluster call 192.168.163.132:6381 config set masterauth cc

    redis-cli -a cc --cluster call 192.168.163.132:6381 config rewrite

    说明:连接到集群的任意一节点来对整个集群的所有节点进行设置。

    迁移相关

    ① 在线迁移slot :在线把集群的一些slot从集群原来slot节点迁移到新的节点,即可以完成集群的在线横向扩容和缩容。有2种方式进行迁移

    一是根据提示来进行操作:

    迁移

    直接连接到集群的任意一节点

    redis-cli -a cc --cluster reshard 192.168.163.132:6379

    二是根据参数进行操作:

    迁移

    redis-cli -a cc --cluster reshard 192.168.163.132:6379 --cluster-from 117457eab5071954faab5e81c3170600d5192270 --cluster-to 815da8448f5d5a304df0353ca10d8f9b77016b28 --cluster-slots 10 --cluster-yes --cluster-timeout 5000 --cluster-pipeline 10 --cluster-replace

    说明:连接到集群的任意一节点来对指定节点指定数量的slot进行迁移到指定的节点。 

    ② 平衡(rebalance)slot 

    1)平衡集群中各个节点的slot数量

    平衡

    redis-cli -a cc --cluster rebalance 192.168.163.132:6379

     2)根据集群中各个节点设置的权重等平衡slot数量(不执行,只看计划)

    模拟

    redis-cli -a cc --cluster rebalance --cluster-weight 117457eab5071954faab5e81c3170600d5192270=5 815da8448f5d5a304df0353ca10d8f9b77016b28=4 56005b9413cbf225783906307a2631109e753f8f=3 --cluster-simulate 192.168.163.132:6379

    ③ 导入集群

    导入

    redis-cli --cluster import 192.168.163.132:6379 --cluster-from 192.168.163.132:9021 --cluster-replace

    说明:外部Redis实例(9021)导入到集群中的任意一节点。

    注意:测试下来发现参数--cluster-replace没有用,如果集群中已经包含了某个key,在导入的时候会失败,不会覆盖,只有清空集群key才能导入。

    *** Importing 97847 keys from DB 0

    Migrating 9223372011174675807 to 192.168.163.132:6381: Source 192.168.163.132:9021 replied with error:

    ERR Target instance replied with error: BUSYKEY Target key name already exists

    并且发现如果集群设置了密码,也会导入失败,需要设置集群密码为空才能进行导入(call)。通过monitor(9021)的时候发现,在migrate的时候需要密码进行auth认证。

    展开全文
  • Redis提供了redis-cliredis-server、redis-benchmark等Shell工具。它们 虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题一、r...
    • Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。它们 虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题

    一、redis-cli

    • 在前面数据库连接的时候已经redis-cli的-h、-p参数,除了这些参数,还有很多有用的参数,要了解redis-cli的全部参数,可以执行redis-cli-help命令来进行查看

    • 下面将对一些重要参数的含义以及使用场景进行说明

    -x

    • -x选项代表从标准输入(stdin)读取数据作为redis-cli的最后一个参数

    • 例如下面的操作会将字符串world作为set hello的值:

    -c

    • -c(cluster)选项是连接Redis Cluster节点时需要使用的

    • -c选项可以防止moved和ask异常,有关Redis Cluster将在后面介绍

    -a

    • 如果Redis配置了密码,可以用-a(auth)选项,有了这个选项就不需要手动输入auth命令

    • 如果需要redis的“requirepass”配置参数:

    • CONFIG SET requirepass "123456" 可以设置redis的登录密码为123456

    --scan、--pattern

    • --scan选项和--pattern选项用于扫描指定模式的键,相当于使用scan命令

    --slave

    • -slave选项是把当前客户端模拟成当前Redis节点的从节点,可以用来获取当前Redis节点的更新操作,有关于Redis复制会在后面文章详细介绍。合理的利用这个选项可以记录当前连接Redis节点的一些更新操作,这 些更新操作很可能是实际开发业务时需要的数据

    • 注意:ING命令是由于主从复制产生的,后面文章会对主从复制进行介绍

    • 下面开启第一个客户端,使用--slave选项,看到同步已完成:

    • 在后侧开启另一个客户端做一些更新操作,然后左侧的第一个客户端会收到Redis节点的更新操作:

    --rdb

    • --rdb选项会请求Redis实例生成并发送RDB持久化文件,保存在本地

    •  可使用它做持久化文件的定期备份。有关Redis持久化在后面会详细介绍

    --pipe

    • --pipe选项用于将命令封装成Redis通信协议定义的数据格式,批量发送给Redis执行,有关Redis通信协议将在后面会详细介绍

    • 例如下面操作 同时执行了set hello world和incr counter两条命令:

    echo -en '*3\r\n$3\r\nSET\r\n$5\r\nhello\r\n$5\r\nworld\r\n*2\r\n$4\r\nincr\r\n$7\r\ncounter\r\n' | redis-cli --pipe

    --bigkeys

    • --bigkeys选项使用scan命令对Redis的键进行采样,从中找到内存占用比较大的键值,这些键可能是系统的瓶颈

    --eval

    • --eval选项用于执行指定Lua脚本,有关Lua脚本的使用将在后面会详细介绍

    • latency有三个选项,分别是--latency、--latency-history、--latency-dist。它们都可以检测网络延迟,对于Redis的开发和运维非常有帮助

    ①--latency

    • 该选项可以测试客户端到目标Redis的网络延迟

    • 例如当前拓扑结构如下图所示。客户端B和Redis在机房B,客户端A在机房A,机房A和机房B是跨地区的

    • 客户端B:

    • 客户端A:

    • 可以看到客户端A由于距离Redis比较远,平均网络延迟会稍微高一些

    ②--latency-history

    • --latency的执行结果只有一条,如果想以分时段的形式了解延迟信息, 可以使用--latency-history选项,可以通过-i参数控制间隔时间

    ③--latency-dist

    • 该选项会使用统计图表的形式从控制台输出延迟统计信息

    --stat

    • --stat选项可以实时获取Redis的重要统计信息,虽然info命令中的统计信 息更全,但是能实时看到一些增量的数据(例如requests)对于Redis的运维 还是有一定帮助的,如下所示:

    --raw、--no-raw

    • --no-raw选项是要求命令的返回结果必须是原始的格式,--raw恰恰相反,返回格式化后的结果

    • 在Redis中设置一个中文的value:

    • 如果正常执行get或者使用--no-raw选项,那么返回的结果是二进制格式:

    • 如果使用了--raw选项,将会返回中文:

    二、redis-server

    --test-memory

    • redis-server除了启动Redis外,还有一个--test-memory选项。--test-memory可以用来检测当前操作系统能否稳定地分配指定容量的内存给 Redis,通过这种检测可以有效避免因为内存问题造成Redis崩溃

    • 例如下面操作检测当前操作系统能否提供1G的内存给Redis。整个内存检测的时间比较长,就不显示图片了

    redis-server --test-memory 1024
    • 当输出passed this test时说明内存检测完毕,最后会提示--test-memory只是简单检测,如果有质疑可以使用更加专业的内存检测工具。

    • 通常无需每次开启Redis实例时都执行--test-memory选项,该功能更偏向于调试和测试,例如,想快速占满机器内存做一些极端条件的测试,这个功 能是一个不错的选择

    三、redis-benchmark

    • redis-benchmark可以为Redis做基准性能测试,它提供了很多选项帮助开发和运维人员测试Redis的相关性能,下面分别介绍这些选项

    • 详情参阅:https://redis.io/topics/benchmarks

    -h

    • 指定服务器主机名

    • 默认值127.0.0.1

    -p

    • 指定服务器端口

    • 默认值为6379

    -s

    • 指定服务器socket

    -c

    • -c(clients)选项代表客户端的并发数量(默认是50)

    -n <requests>

    • -n(num)选项代表客户端请求总量(默认是100000)

    • 例如下面的命令代表100各个客户端同时请求Redis,一 共执行20000次。redis-benchmark会对各类数据结构的命令进行测试,并给出性能指标:

    redis-benchmark -c 100 -n 20000

    • 例如上面一共执行了20000次get操作,在0.81秒完成,每个请求数据量是3个字节,2.44%的命令执行时间小于1毫秒,Redis每秒可以处理24691.36次get请求

    -d

    • 以字节的形式指定set/get值的数据大小

    • 默认值为2

    -q

    • -q选项仅仅显示redis-benchmark的requests per second信息

    • 例如,接着上面的演示案例

    redis-benchmark -c 100 -n 20000 -q

     

    -r

    • 在一个数据库内容为空的Redis上,执行了redis-benchmark命令之后会发现数据库中自动新增4个键:

    • 如果想向Redis插入更多的键,可以执行使用-r(random)选项,可以向Redis插入更多随机的键

    redis-benchmark -c 100 -n 20000 -r 10000
    • -r选项会在key、counter键上加一个12位的后缀,-r10000代表只对后四位做随机处理(-r不是随机数的个数)。例如进行上面的操作后,key的数量和结果结构如下:

    -P

    • 通过管道传输请求,-P选项代表每个请求pipeline的数据量(默认为1)

    -k<boolean>

    • -k选项代表客户端是否使用keepalive,1为使用,0为不使用,默认值为 1

    -t

    • -t选项可以对指定命令进行基准测试

    --csv

    • --csv选项会将结果按照csv格式输出,便于后续处理,如导出到Excel 等

    -L

    • 死循环,永久执行测试

    -I

    • Idle模式。仅打开N个idle连接并等待

    展开全文
  • redis-cli安装使用

    2021-01-17 19:05:54
    如果服务器联网也可以直接使用命令下载:$ wget http://download.redis.io/releases/redis-6.0.1.tar.gz②解压进入包所在目录解压$ tar xzf redis-6.0.1.tar.gz③编译进入解压后目录$ cd redis-6.0.1$ make编译过程...

    ①下载

    官方下载地址:https://redis.io/download

    如果服务器联网也可以直接使用命令下载:

    $ wget http://download.redis.io/releases/redis-6.0.1.tar.gz

    ②解压

    进入包所在目录解压

    $ tar xzf redis-6.0.1.tar.gz

    ③编译

    进入解压后目录

    $ cd redis-6.0.1

    $ make

    编译过程中若出现无法找到cc命令则安装

    $ yum install gcc-c++ -y

    再次编译若出现类似如下异常:

    server.c:5118:176: 错误:‘struct redisServer’没有名为‘maxmemory’的成员

    则需升级gcc版本:

    # 查看gcc版本是否在5.3以上,centos7.6默认安装4.8.5

    $gcc -v

    # 升级gcc到5.3及以上,如下:

    升级到gcc 9.3:

    $yum -y install centos-release-scl

    $yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

    $scl enable devtoolset-9 bash

    需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。如果要长期使用gcc 9.3的话:

    $echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

    升级完之后再次编译即可

    ④使用redis-cli链接redis服务器

    进入src目录执行如下命令即可进入redis命令行,host 服务器ip,port 端口,password 密码,未设置密码则不需要

    $./redis-cli -h host -p port -a password

    ⑤常用命令

    1、连接操作相关的命令

    quit:关闭连接(connection)

    auth:简单密码认证

    2、对value操作的命令

    exists(key):确认一个key是否存在

    del(key):删除一个key

    type(key):返回值的类型

    keys(pattern):返回满足给定pattern的所有key

    randomkey:随机返回key空间的一个key

    rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key

    dbsize:返回当前数据库中key的数目

    expire:设定一个key的活动时间(s)

    ttl:获得一个key的活动时间

    select(index):按索引查询

    move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库

    flushdb:删除当前选择数据库中的所有key

    flushall:删除所有数据库中的所有key

    3、对String操作的命令

    set(key, value):给数据库中名称为key的string赋予值value

    get(key):返回数据库中名称为key的string的value

    getset(key, value):给名称为key的string赋予上一次的value

    mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1,key2…)的value

    setnx(key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为value

    setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time

    mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key i的string赋值value i

    msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,则向库中添加string,名称key i赋值为value i

    incr(key):名称为key的string增1操作

    incrby(key, integer):名称为key的string增加integer

    decr(key):名称为key的string减1操作

    decrby(key, integer):名称为key的string减少integer

    append(key, value):名称为key的string的值附加value

    substr(key, start, end):返回名称为key的string的value的子串

    4、对List操作的命令

    rpush(key, value):在名称为key的list尾添加一个值为value的元素

    lpush(key, value):在名称为key的list头添加一个值为value的 元素

    llen(key):返回名称为key的list的长度

    lrange(key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始,下同)

    ltrim(key, start, end):截取名称为key的list,保留start至end之间的元素

    lindex(key, index):返回名称为key的list中index位置的元素

    lset(key, index, value):给名称为key的list中index位置的元素赋值为value

    lrem(key, count, value):删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。 lpop(key):返回并删除名称为key的list中的首元素 rpop(key):返回并删除名称为key的list中的尾元素 blpop(key1, key2,… key N, timeout):lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作。

    brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。

    rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

    5、对Set操作的命令

    sadd(key, member):向名称为key的set中添加元素member

    srem(key, member) :删除名称为key的set中的元素member

    spop(key) :随机返回并删除名称为key的set中一个元素

    smove(srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合

    scard(key) :返回名称为key的set的基数

    sismember(key, member) :测试member是否是名称为key的set的元素

    sinter(key1, key2,…key N) :求交集

    sinterstore(dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合

    sunion(key1, key2,…key N) :求并集

    sunionstore(dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合

    sdiff(key1, key2,…key N) :求差集

    sdiffstore(dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合

    smembers(key) :返回名称为key的set的所有元素

    srandmember(key) :随机返回名称为key的set的一个元素

    6、对zset(sorted set)操作的命令

    zadd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。

    zrem(key, member) :删除名称为key的zset中的元素member

    zincrby(key, increment, member) :如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

    zrank(key, member) :返回名称为key的zset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

    zrevrank(key, member) :返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

    zrange(key, start, end):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素

    zrevrange(key, start, end):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素

    zrangebyscore(key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素 zcard(key):返回名称为key的zset的基数 zscore(key, element):返回名称为key的zset中元素element的score zremrangebyrank(key, min, max):删除名称为key的zset中rank >= min且rank <= max的所有元素 zremrangebyscore(key, min, max) :删除名称为key的zset中score >= min且score <= max的所有元素

    zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

    7、对Hash操作的命令

    hset(key, field, value):向名称为key的hash中添加元素fieldvalue

    hget(key, field):返回名称为key的hash中field对应的value

    hmget(key, field1, …,field N):返回名称为key的hash中field i对应的value

    hmset(key, field1, value1,…,field N, value N):向名称为key的hash中添加元素field ivalue i

    hincrby(key, field, integer):将名称为key的hash中field的value增加integer

    hexists(key, field):名称为key的hash中是否存在键为field的域

    hdel(key, field):删除名称为key的hash中键为field的域

    hlen(key):返回名称为key的hash中元素个数

    hkeys(key):返回名称为key的hash中所有键

    hvals(key):返回名称为key的hash中所有键对应的value

    hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

    8、持久化

    save:将数据同步保存到磁盘

    bgsave:将数据异步保存到磁盘

    lastsave:返回上次成功将数据保存到磁盘的Unix时戳

    shundown:将数据同步保存到磁盘,然后关闭服务

    9、远程服务控制

    info:提供服务器的信息和统计

    monitor:实时转储收到的请求

    slaveof:改变复制策略设置

    config:在运行时配置Redis服务器

    展开全文
  • 这里写自定义目录标题安装Windows Docker Desktop下载Redis镜像启动下载的Redis镜像的容器Redis-cli连接Redis 安装Windows Docker Desktop 下载并安装,docker hub登录之类不赘述 下载Redis镜像 去docker hub寻找...

    安装Windows Docker Desktop

    下载并安装,docker hub登录之类不赘述

    下载Redis镜像

    启动docker desktop,本质是为了启动docker daemon(守护进程)。执行命令前必须保证docker daemon是启动状态
    docker hub寻找中意的镜像
    我中意的是6.2.4-alpine,6.2.4是redis版本,目前最新,alpine是一个精简版linux,镜像基于alpine构建所以体积也小。
    命令如下:

    docker pull redis:6.2.4-alpine
    

    启动下载的Redis镜像的容器

    命令如下:

    docker run -v C:\work\data\docker-redis-volume\conf:/usr/local/etc/redis --name myredis -d -p 6379:6379 redis:6.2.4-alpine redis-server /usr/local/etc/redis/redis.conf
    

    先不要急着执行!! 还有一些微小的工作要做。
    这个是我自己用的命令,看起来有点长,我解释一下
    命令的核心其实就是这样:

    docker run -d redis:6.2.4-alpine redis-server
    

    只要这一句就可以启动redis了,这里-d是指在后台启动容器,只打印启动的容器的ID,不加的话容器执行的命令会打印到当前命令行,在这个例子中我们会看到redis的启动信息

    接下来逐一介绍我使用的语句里的参数含义:

    -v C:\work\data\docker-redis-volume\conf:/usr/local/etc/redis
    

    -v是指将容器中的 /usr/local/etc/redis 目录挂载到宿主机的C:\work\data\docker-redis-volume\conf目录
    后面的容器目录不用修改,前面的目录根据自己电脑的目录来修改

    --name myredis
    

    给你的容器起个名字,随便起吧

    -p 6379:6379
    

    -p用来映射容器的端口,前面是宿主机的,后面是容器里的

    redis-server /usr/local/etc/redis/redis.conf
    

    redis-server其实就是启动redis的命令,后面接上一个文件,表示使用这个配置文件来启动,这个配置文件的路径可以看到,和我们之前挂载出来的路径相同,结合前面的-v命令,意思就是使用宿主机中的C:\work\data\docker-redis-volume\conf\redis.conf文件作为配置文件启动容器中的redis。
    这里配置文件可以去官网下载,根据自己的redis版本选择。
    windows中注意修改配置文件中的如下几点:

    #bind 127.0.0.1
    

    这一行加上#号,表示不用绑定本地访问,这很重要,尤其在windows上,实测如果不注释,宿主机上都无法访问
    不知道为什么,我在Mac系统上试过,可以不用注释这行,就能够本地访问。猜测可能是因为windows的wsl,宿主机的访问还是被当作外部访问了,有了解详情的高手可以指点一下。

    然后的操作二选一,关闭保护模式或者设置密码,建议是设置密码

    #protected-mode yes
    

    注释这行关闭保护模式

    requirepass 97812e6b-d9be-4cd1
    

    或者打开这行设置密码
    创建好目录,下载和修改了配置文件,准备工作完成,可以执行启动命令了。
    之后docker ps查看可以看到:
    查看已启动redis容器

    Redis-cli连接Redis

    使用docker装的redis,宿主机没有装redis自然也没有redis-cli了,那么怎么连接呢?
    两种方式,一种直接进入redis容器内部执行redis-cli

    $ docker exec -it a52dc redis-cli
    

    这里-it是-i -t合起来的意思,作用是使用交互式命令行来进行操作,a52dc就是容器的id,docker很多命令都不要求id写全,只能达到区分效果就行
    整句话的意思就是我要到a52dc这个容器内部去执行redis-cli命令,并且把这个命令的输入输出关联到当前的交互窗口
    上面这个方式是最简单的,但是我们想模拟外部连接该怎么做呢,可以再启动一个只执行redis-cli的redis镜像

    $ docker run -it --network container:a52dc --rm redis:6.2.4-alpine redis-cli
    

    这个命令使用redis:6.2.4-alpine镜像启动另外一个容器,不过只是执行其中的redis-cli命令
    这里–network后面是container用法,指定和a52dc这个 container公用一个网络
    –rm表示当容器退出,就会自动删除容器和产生的相关文件,由于我们只是使用redis-cli命令,加上–rm非常合理
    这种方式不仅可以连接本地,也可以连接远程redis,只需要在redis-cli之后接上相关参数,和使用redis-cli一样。

    $ docker run -it --rm redis:6.2.4-alpine redis-cli -h some-host -p some-port
    
    展开全文
  • 设计的redis命令redis-server redis-cli要从设置密码说起...本来启动redis的server命令#启动redis-server,并且指定配置文件[zf@VM_0_13_centos redis]$ ./bin/redis-server ./redis.conf这个时候,密码的配置项...
  • redis-cli -h 127.0.0.1 -p 6379 命令参数说明: -h <hostname> Server hostname (default: 127.0.0.1). Redis服务IP -p <port> Server port (default: 6379). Redis服务端口 -s <socket>
  • redis-cli 批量执行命令

    2021-07-20 18:42:24
    redis-cli 安装配置 下载 redis 安装包 官网地址:https://redis.io/ 例如: $ wget http://download.redis.io/releases/redis-5.0.5.tar.gz -O /usr/local/redis-5.0.5.tar.gz 解压并备份包 $ tar zxvf /usr/local...
  • reids安装好之后使用“./redis-server redis.conf”启动,默认是前端启动,这导致我们不能干任何事情,因为redis独占了这个命令窗口,我们没地方输入命令,因此我们需要修改一下redis的配置文件redis.conf,让redis...
  • redis设置密码编辑redis配置文件,这里的配置为/etc/redis/6379.conf,根据自己的情况而定。vim /etc/redis/6379.conf找到以#requirepass 开头的这一行...然后重启redis,其中-a 123546 是刚刚设置的密码redis-cli...
  • redis-server 常用参数 --port 6666 # 指定端口启动 ...redis-cli 常用参数 -h <hostname> redis-server服务ip (default: 127.0.0.1). -p <port> redis-server服务端口 (default: 6379). -a <p.
  • redis-cli我们最常用的三个参数就是-h、-p、-a选项,分配用来指定连接的redis-server的host、port和登录密码。通过redis-cli –help发现,redis-... 比如从管道中读取输入:echo-en"chen.qun"|redis-cli-xsetname2)-...
  • redis-cli切换库

    2021-11-19 11:11:30
    redis-cli 切换1库 select 1
  • Redis 4.0.10之前版本和5.0 RC3之前的5.x版本中的redis-cli存在缓冲区溢出漏洞。攻击者可借助特制的命令行利用该漏洞执行代码并提升至更高的权限。 解决办法 升级最新版本,redis-windows 微软停止维护,只有3.2版...
  • Redis集群搭建安装ruby安装gem报错 在 /usr/local/ 下创建 redis 文件夹并进入 tar -zxvf redis-5.0.0.tar.gz make && make install 编辑 redis 配置文件vim /etc/redis/6379.conf 设置允许远程连接 将 ...
  • 今天安装redis后客户端,执行 redis-cli 命令却无法使用,即redis-cli执行后报找不到的错误(redis-cli: command not found)。这主要是安装redis的时候没有把客户端装上,在StackOverFlow上找到了一种只安装redis-cli...
  • Redis分布式集群几点说道
  • 1、找到redis文件夹,找到redis-cli.exe。直接双击打开。 2、直接在cmd打开。 错误:‘redis-cli’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 这个时候需要我们配置下环境变量。 我的电脑右键-》属性...
  • redis-cli -h 192.168.159.129 -p 6379 -h <主机ip>,默认是127.0.0.1 -p <端口>,默认是6379 -a <密码>,如果redis加锁,需要传递密码 参考目录 ...
  • 1、描述 ...redis版本:Redis-x64-5.0.10 下载安装方式:压缩包解压使用 问题:在cmd控制台进不去redisredis解压的文件加中能进入 2、操作 将redis路径配置到系统变量中 3、结果 能进去了
  • 3.在使用redil-cli时候发现报了bash: redis-cli: command not found...的错误,感觉应该是命令没有真正的拷贝到bin目录下, 可以看到我的redis现在在/usr/local/bin下运行,找到这个目录,看看有redis-cli这个命令没有,...
  • 执行 报错信息 Node 127.0.0.1:30001 is not configured .../root/soft/redis-5.0.5/redis.conf文件中, cluster-enabled yes 被注释掉了 解决方式: vi redis.conf 解开注释,保存。 重新启动redis即可 ...
  • java抽象-老师的生日-逻辑思维-有趣的面试题-遁地龙卷风(-1)写在前面 都快去北京了,硬生生的安排一场java考试,对于那些特别细节的东西我忘了吧也不觉得有什么不好,以前都记得,也都见过,只不过平时不常用连接断了,...
  • redis-cli的命令行参数没有官方文档.如果您键入–help的命令行参数,您会得到以下内容:对于redis-cli 2.8.18:redis-cli 2.8.18Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]-h Server hostname (default: ...
  • Redis执行redis-cli shutdown时,报错(error) ERR Errors trying to SHUTDOWN. Check logs. 1.安装reids之后进行伪集群启动(配置文件在/data/server/redis/etc/redis.conf) redis-server /data/server/redis/etc/...
  • 利用redis-cli命令行工具有一个批量插入模式,是专门为批量执行命令设计的。可以把Mysql查询的内容格式化成redis-cli可用数据格式。 一、sql构造数据 SELECT CONCAT( "*3\r\n", '$', LENGTH(redis_cmd), '\r\n'...
  • redis-cli 2>/dev/null -a pwd -n 2 keys 'user*'|xargs redis-cli 2>/dev/null -a pwd-n 2 del 命令描述: 2>/dev/null:侧面忽略redis-cli输出的警告 -a pwd:认证,需填入redis 密钥 -n 2:指定库 ...
  • dockerfile之redis-cli工具

    2021-03-08 16:18:12
    FROM goodsmileduck/redis-cli:6.0.4 # 作者描述信息 MAINTAINER zhangzhidao # 替换阿里云的并更新源、安装openssh 并修改配置文件和生成key 并且同步时间 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors....
  • 以为shutdown让你退出了指定的主机,再次redis-cli需要再次指定主机,解决方法 重启redis服务 redis-server /data/redis_cluster/redis_6379/conf/redis_6379.conf
  • mysql的数据导入到redis中可以通过编写脚本来实现,先连接db然后将查询出的数据批量写入到redis中,但redis pipe的方式更加简便高效。分享下最代码的相关脚本代码片段:linux下直接执行mysql -uroot -p111111 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,865
精华内容 47,946
关键字:

redis-cli

redis 订阅