首页 > 数据库 >Redis——基本使用

Redis——基本使用

时间:2023-10-08 16:57:22浏览次数:64  
标签:基本 setname redis Redis value key 使用 节点

五种数据类型

Redis是一个基于内存的数据库。是一个key-value的数据库,key一般是String类型,value的类型多种多样。

字符串String

SET name zhangxiancheng
//redis中默认都是使用字符串来存储数据的
DEL key//删除
EXISTS key//是否存在
KEYS *//所有键

redis中的键和值都是以二进制的形式存储的。

TTL key//Time To Live查看键的过期时间,-1表示没有设置过期时间,-2表示过期
EXPIRE key 10//设置过期时间10秒
SETEX key 10 value//设置键值对并设置过期时间

列表List

有序(插入顺序)可重复,类似数组。可以使用LPUSH或RPUSH将元素添加到列表的头部或者尾部

使用LPOP或RPOP从列表的头部或者尾部删除元素。

//增加元素
LPUSH listname value...
LPUSH listname a b c d e
//获取列表内容
LRANGE listname start stop//start起始位置;stop结束位置,为-1时表示最后一个元素
//删除元素
LPOP listname num//num删除个数
//列表长度
LLEN listname
//修剪
LTRIM listname start stop//只保留start到stop之间的元素

image-20230918192439628

上述命令可以用来实现一个简单的消息队列,LPUSH——RPOP就实现了一个最简单的先进先出队列

集合Set

无序不重复

//增加元素
SADD setname value...
//获取列表
SMEMBERS setname
//元素是否存在
SISMEMBER setname value
//删除元素
SREM setname value
//支持集合运算
//sinter交集
SINTER setname1 setname2
//sunion并集
SUNION setname1 setname2

有序集合ZSet

有序不重复,member必须唯一

//增加元素
ZADD setname [score member]...
ZADD setname 680 清华 660 北大
//获取有序列表
ZRANGE setname 0 -1
北大
清华
ZRANGE setname 0 -1 WITHSCORES
北大
660
清华
680
//查看某个元素的分数
ZSCORE setname member
//查看排名(索引)(从小到大)
ZRANK setname member
//查看排名(从大到小)
ZREVRANK setname member
//删除元素
ZREM setname member

哈希Hash

是一个key和value的映射表(或者说集合),适合存储对象。

//增加元素
HSET key [field value ]...
HSET person name xiancheng
HSET person age 18
//获取属性名对应的属性值
HGET key field
HGET person name
//获取所有键值对(成对)
HGETALL key
//删除某个键值对
HDEL key field
HDEL key name
//判断某个键值对是否存在
HEXISTS key field
//获取所有键
HKEYS key
//获取键值对数量
HLEN key

发布订阅功能

publish发布频道和subscribe订阅频道

publish 频道 消息

事务

在一次请求中执行多个命令。

持久化(重要)

没有持久化的话,一旦服务器重启或断电,之前所有数据就会丢失。分为RDB方式和AOF方式。

RDB(Redis Database)

指在指定时间间隔内将内存中的数据快照(某个时间点上数据的完整副本)写入磁盘文件dump.rdb中,redis.conf配置文件中有三种默认配置:

image-20230918200519225

rdb文件适合作为备份。在备份过程中redis处于阻塞的状态,不能接受任何请求。虽然使用bgsave命令可以创建一个子进程负责将数据写入到硬盘中,让主进程继续处理请求,但是该过程存在一定的性能损耗,在创建子进程的时间内redis还是不能处理任何请求,无法做到秒级别的快照。

AOF(Append Only File)

Append Only File追加文件。解决RDB的缺点。

在执行写命令的时候,不仅会将命令写入内存中,还会将命令追加到一个追加的aof文件中。它会以日志的形式记录每一个写操作,当Redis重启的时候就会通过重新执行aof文件中的命令,在内存中重建整个数据库的内容。

配置文件中将appendonly no改为appendonly yes即可。

主从复制(读写分离)

是指将一台Redis服务器(主节点master)上的数据复制到其他Redis服务器(从节点slave)上,是一对多。

单向复制,一般主节点负责写操作,从节点负责读操作(读写分离)。

主节点会将自己的数据变化通过异步的方式发送给从节点,从节点接收数据之后更新自己的数据。

配置

复制redis.conf,命名redis-6380.conf

修改配置文件中端口号port为指定端口号(6380);把pidfile(进程ID)这个配置项也改成指定端口号(redis-6380.pid);dbfilename也加上端口号(dump-6380.rdb);找到replicaof配置项,复制注释,指定主节点(replicaof host port)。启动从节点,主节点的数据在从节点上也能看到。之后若要再增加从节点,则复制6380配置文件,将所有6380替换为6381即可。

哨兵模式

刚才搭建了一个一主两从的Redis集群,实现了一定程度上的高可用,但是这个集群存在一些问题。主节点宕机,需要手工将一台从节点提升为主节点。

因此需要一个自动的故障转移,Redis哨兵模式解决此问题。

哨兵以独立的进程运行在Redis集群中,监控Redis集群中的各个节点是否正常运行。

哨兵也可能存在故障的问题,所以生产中会使用三个哨兵节点保证高可用,哨兵集群会通过选举的方式选出一个领导者,由领导者监控其他节点。

功能:

1、监控:不断发送命令检查Redis节点是否正常。

2、通知:发现某节点出现问题,哨兵会通过发布订阅模式通知其他节点。

3、自动故障转移:主节点宕机,哨兵会将一个从结点升级为新的主节点,再讲其他从结点指向新的主节点。

配置:

在Redis集群中添加一个哨兵节点,新建sentinel.config文件

centinel monitor master host port 1//1表示只需要一个哨兵结点同意就可故障转移

启动哨兵结点:redis -sentinel sentinel.conf

标签:基本,setname,redis,Redis,value,key,使用,节点
From: https://www.cnblogs.com/fallorange/p/17749583.html

相关文章

  • git - rebase 使用
    原理一句话总结就是:把当前分支从搬到目标分支之上。首先,执行rebase操作时会先找到当前分支和目标分支的最近共同commit。然后记录下当前分支自这个共同commit以来的所有提交。之后分别将记录中的commit应用到目标分支上,类似于cherry-pick。如果遇到冲突需要先解决冲突。最后......
  • ts 中泛型的简单使用
    interfaceApiResponseData<T>{ code:number data:T message:string}在这段TypeScript代码中,T是一个泛型参数(genericparameter),用于描述ApiResponseData<T>的类型。泛型可以理解为是一种占位符,它能够让我们在定义函数或类型时先不确定具体的类型,而是让使用......
  • Unity 通信方案 - 使用 Google Protobuf 序列化数据
    1.下载和编译1.1下载ProtoBuf源文件从github下载最新的protoBuf库,如下图所示 Releases·protocolbuffers/protobuf(github.com)1.2编译dll和导入解压后打开/scharp/src中的sln工程文件 选择Release,Google.Protobuf,之后在生成中生成文件在......
  • redis-cluster nodes命令信息说明
     集群定义1.1每个字段的含义如下:1.id:节点ID,一个40字节的随机字符串,节点创建时生成,且不会变化(除非使用CLUSTERRESETHARD命令)。2.ip:port:客户端访问的地址。3.flags:逗号分隔的标记位,可能值有:myself,master,slave,fail?,fail,handshake,noaddr,noflags......
  • 内核态内存的正确使用方法
    前言看完了伙伴系统的设计、slab分配器的设计、vmalloc、kmalloc这些内容对于内存管理的一些细节上好像比较清楚了,但是内核是如何使用内存的还是有一些混淆。也产生了一些疑问,在内核中内存的正确打开方式是什么呢?内核地址空间划分首先我们需要搞情况内核的地址空间,不同地址空间......
  • centos7系统中创建临时接口,使用jmeter进行http压测
    要在一台CentOS7服务器上使用JMeter进行HTTP接口的压测,首先需要在服务器上部署一个Web服务器,然后在其上部署您想要测试的接口。以下是一些简单的步骤来实现这一目标:步骤1:在CentOS7服务器上安装Web服务器您可以选择安装常用的Web服务器,比如Apache或Nginx。以下......
  • ControlNet-trt优化总结3:使用multi-stream和cuda-graph构建并行流水线
    ControlNet-trt优化总结3:使用multi-stream和cuda-graph构建并行流水线上节谈到使用TRT-API来构建网络,在这一节中总结一些trick来提升模型的运行效率,这些trick在所有的trt优化中均可使用,主要有以下几点:使用cuda_graph减少kernel间的启动间隙使用Mutil-stream增加异步cuda_gra......
  • 使用binlog恢复数据
    目录数据模拟恢复到查找最初始的建prod表查找updata语句查找delete语句查找删除语句数据模拟[root@db01~]#cat6.sh#!/bin/bashmysql-uroot-p123-e"dropdatabaseifexistsprod;"mysql-uroot-p123-e"createdatabaseifnotexistsprod;"mysql-uroot-p123......
  • 使用RequireJS并实现一个自己的模块加载器 (一)
    使用RequireJS并实现一个自己的模块加载器(一) RequireJS&SeaJS在 模块化开发 开发以前,都是直接在页面上引入 script 标签来引用脚本的,当项目变得比较复杂,就会带来很多问题。JS项目中的依赖只有通过引入JS的顺序来确定,项目会变得复杂难以维护。复杂的脚本会暴露很......
  • 使用 Rancher 部署管理 K8S 集群
    目录使用Rancher部署管理K8S集群主机规划部署docker-ce(rancher)部署rancher使用Rancher部署管理K8S集群主机规划主机名称角色IP地址基础软件rancher管理k8s集群10.0.0.203docker-cemasterk8s集群主节点10.0.0.200docker-cenode1k8s集群......