redis常用命令

目录

一、后台启动

  • 修改redis.conf配置文件,将daemonize设置为yes

    • 命令:vi redis.conf,注:vi后接的是路径/文件名
    • 修改,完成后:wq退出
  • 启动redis(redis-server在/usr/local/bin)

    • 命令:redis-server redis.conf,注:redis-server后接的是redis.conf的目录地址
    • 查看运行状态:ps -ef | grep redis
  • 通过客户端连接redis:redis-cli

  • redis退出

    • 单实例关闭:redis-cli shutdown
    • 多实例关闭,指定端口关闭:redis-cli -p 6379 shutdown

二、Redis键(Key)

  • keys *:查看当前库所有key (匹配:keys *1)
  • exists key:判断某个key是否存在
  • type key :查看你的key是什么类型
  • del key :删除指定的key数据
  • unlink key :根据value选择非阻塞删除
  • expire key 10 10秒钟:为给定的key设置过期时间
  • ttl key :查看还有多少秒过期,-1表示永不过期,-2表示已过期
  • select:命令切换数据库
  • dbsize:查看当前数据库的key的数量
  • flushdb:清空当前库
  • flushall:通杀全部库

三、String、list、set、Hash、有序集合Zset

String

  • set <key><value>:添加键值对

  • get <key>:查询对应键值

  • append <key><value>:将给定的 追加到原值的末尾

  • strlen <key>:获得值的长度

  • setnx <key><value>:只有在 key 不存在时 设置 key 的值

  • incr/decr <key>

    • 将 key 中储存的数字值增/减1
    • 只能对数字值操作,如果为空,新增值为1/-1
  • incrby / decrby <key><步长>:将 key 中储存的数字值增减。自定义步长。

  • mset <key1><value1><key2><value2> ..... :同时设置一个或多个 key-value对

  • mget <key1><key2><key3> .....:同时获取一个或多个 value

  • msetnx <key1><value1><key2><value2> ..... :同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

  • getrange <key><起始位置><结束位置>:获得值的范围,类似java中的substring,前包,后包

  • setrange <key><起始位置><value>用 <value> :覆写所储存的字符串值,从<起始位置>开始(索引从0开始)。

  • setex <key><过期时间><value>:设置键值的同时,设置过期时间,单位秒。

  • getset <key><value>:以新换旧,设置了新值同时获得旧值。
    List

  • lpush/rpush <key><value1><value2><value3> .... :从左边/右边插入一个或多个值。

  • lpop/rpop <key>:从左边/右边吐出一个值。值在键在,值亡键亡。

  • rpoplpush <key1><key2>:从列表右边吐出一个值,插到列表左边。

  • lrange <key><start><stop>:按照索引下标获得元素(从左到右)

  • lrange mylist 0 -1 :0左边第一个,-1右边第一个,(0-1表示获取所有)

  • lindex <key><index>:按照索引下标获得元素(从左到右)

  • llen <key>:获得列表长度

  • linsert <key> before <value><newvalue>:在的后面插入插入值

  • lrem <key><n><value>:从左边删除n个value(从左到右)

  • lset<key><index><value>:将列表key下标为index的值替换成value
    Set

  • sadd <key><value1><value2> ..... :将一个或多个 member 元素加入到集合 key 中,已经存在的

  • member :元素将被忽略

  • smembers <key>:取出该集合的所有值。

  • sismember <key><value>:判断集合是否为含有该值,有1,没有

  • scard<key>:返回该集合的元素个数。

  • srem <key><value1><value2> .... :删除集合中的某个元素。

  • spop <key>:随机从该集合中吐出一个值。

  • srandmember <key><n>:随机从该集合中取出n个值。不会从集合中删除 。

  • smove <source><destination>:value把集合中一个值从一个集合移动到另一个集合

  • sinter <key1><key2>:返回两个集合的交集元素。

  • sunion <key1><key2>:返回两个集合的并集元素。

  • sdiff <key1><key2>:返回两个集合的差集元素(key1中的,不包含key2中的)
    Hash

  • hset <key><field><value>:给集合中的 键赋值

  • hget <key1><field>:从集合取出 value

  • hmset <key1><field1><value1><field2><value2>... :批量设置hash的值

  • hexists<key1><field>:查看哈希表 key 中,给定域 field 是否存在。

  • hkeys <key>:列出该hash集合的所有field

  • hvals <key>:列出该hash集合的所有value

  • hincrby <key><field><increment>:为哈希表 key 中的域 field 的值加上增量 1 -1

  • hsetnx <key><field><value>:将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .
    Szet

不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。

  • zadd <key><score1><value1><score2><value2>...:将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
  • zrange <key><start><stop> :[WITHSCORES] 返回有序集 key 中,下标在 之间的元素带WITHSCORES,可以让分数一起和值返回到结果集。
  • zrangebyscore key minmax [withscores] [limit offset count]:返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
  • zrevrangebyscore key maxmin [withscores] [limit offset count] :同上,改为从大到小排列。
  • zincrby <key><increment><value> :为元素的score加上增量
  • zrem <key><value>:删除该集合下,指定值的元素
  • zcount <key><min><max>:统计该集合,分数区间内的元素个数
  • zrank <key><value>:返回该值在集合中的排名,从0开始。

四、配置文件

bind

  • 默认情况bind=127.0.0.1只能接受本机的访问请求

  • 不写的情况下,无限制接受任何ip地址的访问

  • 生产环境肯定要写你应用服务器的地址;服务器是需要远程访问的,所以需要将其注释掉
    protected-mode

  • 将本机访问保护模式设置no
    timeout

  • 一个空闲的客户端维持多少秒会关闭,0表示关闭该功能。即永不关闭。
    daemonize

  • 是否为后台进程,设置为yes
    databases 16

  • 设定库的数量 默认16,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
    maxclients

  • 设置redis同时可以与多少个客户端进行连接。

  • 默认情况下为10000个客户端。

  • 如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出"max number of clients reached"以作回应。
    maxmemory

  • 建议必须设置,否则,将内存占满,造成服务器宕机

  • 设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。

五、事务的三个命令Multi,Exec,discard

  • 从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。
  • 组队的过程中可以通过discard来放弃组队。

六、Redis的主从复制

  • slave-priority 10设置从机的优先级,值越小,优先级越高,用于选举主机时使用。默认100,在后面的哨兵模式中会有提及

  • info replication打印主从复制的相关信息

  • slaveof <主机ip><port>成为某个实例的从服务器(配置从服务器)

  • 配置哨兵,填写内容

    • 自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错
    • sentinel monitor mymaster 127.0.0.1 6379 1其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。
  • 启动哨兵/usr/local/bin

    • 执行redis-sentinel /myredis/sentinel.conf

七、集群

  • 合体:cd /opt/redis-6.2.1/src(安装目录)在此目录下执行下面命令

    bash 复制代码
    redis-cli --cluster create --cluster-replicas 1 192.168.11.101:6379
     192.168.11.101:6380 192.168.11.101:6381 192.168.11.101:6389
      192.168.11.101:6390 192.168.11.101:6391

    注:此处不要用127.0.0.1, 请用真实IP地址

    • replicas 1 采用最简单的方式配置集群,一台主机,一台从机,正好三组。

-c 采用集群策略连接,设置数据会自动切换到相应的写主机

通过 cluster nodes 命令查看集群信息

相关推荐
Hello.Reader3 小时前
Redis 延迟监控深度指南
数据库·redis·缓存
ybq195133454313 小时前
Redis-主从复制-分布式系统
java·数据库·redis
马里奥Marioぅ3 小时前
Redis主从切换踩坑记:当Redisson遇上分布式锁的“死亡连接“
redis·分布式锁·redisson·故障转移
好奇的菜鸟6 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°6 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
满昕欢喜7 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
Hello.Reader8 小时前
Redis 延迟排查与优化全攻略
数据库·redis·缓存
简佐义的博客9 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
爬山算法9 小时前
MySQL(116)如何监控负载均衡状态?
数据库·mysql·负载均衡
老纪的技术唠嗑局11 小时前
OceanBase PoC 经验总结(二)—— AP 业务
数据库