前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >NoSql之Redis集群指令集锦

NoSql之Redis集群指令集锦

作者头像
用户9184480
发布2024-12-07 16:41:58
发布2024-12-07 16:41:58
9300
代码可运行
举报
文章被收录于专栏:云计算linux云计算linux
运行总次数:0
代码可运行
Redis安装

服务器
代码语言:javascript
代码运行次数:0
运行
复制
#安装基础依赖,tcl(Tool Command Language)工具命令语言、运行redis命令
$ yum -y install gcc gcc-c++ tcl
#安装redis软件包
$ tar -zxvf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make      #没有configure命令,已经生成了makefile文件,直接make即可
$ make test #测试安装环境,若多次运行失败也不影响安装
$ make install PREFIX=/usr/local/redis  #安装,prefix需大写

#复制配置文件
$ cd /usr/local/redis
$ cp -a 解压目录/redis-5.0.4/redis.conf .

#启动服务,需指定配置文件
$ /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
#关闭服务杀死相关进程
$ pkill redis  或:kill 进程号


#默认是前台运行、ctrl+C停止、修改配置文件重启
$ vim /usr/local/redis/redis.conf
	bind 本机IP地址       #绑定IP地址或回环地址,监听所有IP用0.0.0.0
	daemonize yes        #改为后台daemon运行
	dir /usr/local/redis #指定数据存放目录./
	protected-mode no    #安全模式、需要密码连接
	requirepass 密码值    #设置密码
#重启服务
$ cd /usr/local/redis/
$ ./bin/redis-server redis.conf
$ ss -antp | grep :6379
客户端
代码语言:javascript
代码运行次数:0
运行
复制
$ /usr/local/redis/bin/redis-cli -h 服务器IP -p 6379 -a 密码值
6379> set key值 数据    #存键值对
6379> get key值        #根据key值取数据

或:
$ /usr/local/redis/bin/redis-cli -h 服务器IP -p 6379
6379> set key值 数据    #存键值对
6379> auth 密码值
6379> set key值 数据    #存键值对
6379> get key值        #根据key值取数据
Redis持久化
代码语言:javascript
代码运行次数:0
运行
复制
#默认开启RDB方式持久化
$ vim /usr/local/redis/redis.conf
	#表示900 秒内如果至少有 1 个 key 的值变化,则保存
	save 900 1
	#表示300 秒内如果至少有 10 个 key 的值变化,则保存
	save 300 10
	#表示60 秒内如果至少有 10000 个 key 的值变化,则保存
	save 60 10000
	#文件保存位置、文件名默认是dump.rdb
	dir /usr/local/redis

#可以开启AOF方式持久化
$ vim /usr/local/redis/redis.conf
	#将no改为yes、打开aof持久化方式
	appendonly no
	#有写操作,就马上写入磁盘。效率最慢,但是最安全
	appendfsync always
	#默认,每秒钟写入磁盘一次
	appendfsync everysec
	#不进行AOF备份,将数据交给操作系统处理。最快,最不安全
	appendfsync no
	#文件保存位置、重启后产生文件名默认是appendonly.aof
	dir /usr/local/redis
	
$ pkill redis
$ /usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
Redis数据类型操作
代码语言:javascript
代码运行次数:0
运行
复制
#字符串(String)
#存储: set key value
127.0.0.1:6379> set username jimmy
#获取: get key
127.0.0.1:6379> get username
#删除: del key
127.0.0.1:6379> del username

#哈希(Hash)
#存储:hset key field value
#存储:hmset key field value field value
127.0.0.1:6379> hset user1 username lisi
127.0.0.1:6379> hset user1 password 123
127.0.0.1:6379> hmset user1 username lisi password 123
#hget key field: 获取指定的field对应的值
#hmget key field field...: 获取多个指定的field对应的值
#hgetall key:获取所有的field和value
127.0.0.1:6379> hget user1 username
127.0.0.1:6379> hgetall user1
#删除指定field: hdel key field
127.0.0.1:6379> hdel user1 username
#删除key: del key
127.0.0.1:6379> del username

#列表(List)
#lpush key value: 将元素加入列表左表
#rpush key value:将元素加入列表右边
127.0.0.1:6379> lpush mylist a      
127.0.0.1:6379> rpush mylist b  
#根据下标设置某个值:lset key index value
127.0.0.1:6379> lset mylist 2 aa
#lrange key start end :范围获取
#其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素;
127.0.0.1:6379> lrange mylist 0 -1 
#根据指定下标取某个值:
127.0.0.1:6379> lindex mylist 0
#获取列表的长度:
127.0.0.1:6379> llen mylist
#lpop删除列表最左侧元素、并返回
#rpop删除列表最左侧元素、并返回
127.0.0.1:6379> lpop mylist          
127.0.0.1:6379> rpop mylist
#移除列表中的元素:lrem  key count value
127.0.0.1:6379> lrem mylist 1 aa

#集合(set)
#存储:sadd key value
127.0.0.1:6379> sadd myset a
127.0.0.1:6379> sadd myset a  #重复了返回0
#获取:smembers key:获取set集合中所有元素
127.0.0.1:6379> smembers myset
#删除:srem key value:删除set集合中的某个元素
127.0.0.1:6379> srem myset a

#有序集合(zset)
#存储:zadd key score value
127.0.0.1:6379> zadd mysort 60 zhangsan
127.0.0.1:6379> zadd mysort 50 lisi
#获取:zrange key start end [withscores]
#获取:zrange mysort 0 -1 withscores
127.0.0.1:6379> zrange mysort 0 -1   
127.0.0.1:6379> zrange mysort 0 -1  withscores
#删除:zrem key value
127.0.0.1:6379> zrem mysort lisi

#通用命令
keys *  :获取所有的键
type key:获取键对应的value的类型
del key:删除指定的key-value
exists key:判断某个key值是否已经存在


问题:
mysql数据:
	id  name sex   address
    1    zs   0     beijing        1:[zs,0,beijng]
    2    ls   1     shanghai       1:{name:zs,sex:0,address:beijing}

————————————————————————————

Redis主从配置
主服务器:
代码语言:javascript
代码运行次数:0
运行
复制
#安装基础依赖
$ yum -y install gcc gcc-c++ tcl
#安装redis软件包
$ tar -zxvf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make      #没有configure命令,已经生成了makefile文件,直接make即可
$ make PREFIX=/usr/local/redis install
#复制配置文件
$ cd /usr/local/redis
$ cp 存放路径/redis-5.0.4/redis.conf .
#修改配置文件
$ vim /usr/local/redis/redis.conf
	bind 0.0.0.0       
	port 6379
	pidfile /var/run/redis_6379.pid
	daemonize yes        
	dir /usr/local/redis 
	appendonly yes      
	protected-mode no    
	requirepass 密码值    
$ /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
$ ss -antp | grep :6379
从服务器:
代码语言:javascript
代码运行次数:0
运行
复制
#安装基础依赖
$ yum -y install gcc gcc-c++ tcl
#安装redis软件包
$ tar -zxvf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make      #没有configure命令,已经生成了makefile文件,直接make即可
$ make PREFIX=/usr/local/redis install
#复制配置文件
$ cd /usr/local/redis
$ cp 存放路径/redis-5.0.4/redis.conf .
#修改配置文件
$ vim /usr/local/redis/redis.conf
	bind 0.0.0.0     
	port 6379
	pidfile /var/run/redis_6379.pid
	daemonize yes      
	dir /usr/local/redis
	appendonly yes       
	protected-mode no   
	requirepass 密码值  
	
	replicaof 主服务器IP 主服务器port
	masterauth 主服务器连接密码
$ /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
$ ss -antp | grep :6379
验证主从结构:
代码语言:javascript
代码运行次数:0
运行
复制
#连接上主服务器、进行存数据操作
$ ln -s /usr/local/redis/bin/* /usr/local/bin/
$ redis-cli -h 主服务器IP -p 6379 -a 密码
	6379> set key值 数据
	
#连接上从服务器、进行取数据操作
$ ln -s /usr/local/redis/bin/* /usr/local/bin/
$ redis-cli -h 从服务器IP -p 6379 -a 密码
	6379> get key值

——————————————————

Redis 哨兵(Redis Sentinel)
搭建redis主从从结构
代码语言:javascript
代码运行次数:0
运行
复制
#安装redis服务
$ yum -y install gcc gcc-c++ tcl
$ tar -zxvf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make      
$ make test 
$ make PREFIX=/usr/local/redis install

#复制配置文件
$ cd /usr/local/redis
$ cp 存放路径/redis-5.0.4/redis.conf .
#修改配置文件
$ vim /usr/local/redis/redis.conf
	bind 本机IP地址      
	port 6379
	pidfile /var/run/redis_6379.pid
	daemonize yes       
	dir /usr/local/redis
	appendonly yes       
	protected-mode no  
	requirepass 密码值   
	
	#两个从服务需要配置
	replicaof 主服务器IP 主服务器port
	#masterauth 主服务器连接密码
$ ln -s /usr/local/redis/bin/* /usr/local/bin/
$ redis-server /usr/local/redis/redis.conf
$ ss -antp | grep :6379


#连接redis主节点
$ redis-cli 
	info replcation     #查看主从配置信息
	set name zhangsan   #存储数据测试
配置各节点的哨兵节点
代码语言:javascript
代码运行次数:0
运行
复制
#配置各redis节点的哨兵节点,其使用单独的哨兵配置文件、启动单独的进程
#每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点
$ vim /usr/local/redis/sentinel.conf
	port 26379
	daemonize yes
	logfile "sentinel.log"
	# 哨兵核心配置
	# sentinel monitor <master-name> <master-host> <master-port> <quorum>
	sentinel monitor mymaster 192.168.66.24 6379 2
	#entinel monitor:代表监控。
	#mymaster:代表主节点的名称,可以自定义。
	#192.168.66.24:代表监控的主节点ip
	#6379:代表端口
	#2:法定数量(quorum),代表只有两个或两个以上的哨兵认为主节点不可用的时候,才会把主节点设置为ODOWN状态,然后进行failover操作
	sentinel auth-pass mymaster 主master的密码值
	

#启动各个哨兵进程
$ redis-sentinel /usr/local/redis/sentinel.conf
或:
$ redis-server /usr/local/redis/sentinel.conf --sentinel

#连接哨兵节点
$ redis-cli -p 26379
	info sentinel  #看到的是配置文件最后的内容

#tailf /data/6378/sentinel.conf
known-slave:被发现的从服务器节点
known-sentinel:被发现的其他哨兵节点
epoch:用来记录哨兵进行自动故障转移的操作次数
测试
代码语言:javascript
代码运行次数:0
运行
复制
#查看主配置文件或日志文件
1、关掉一个从服务器的redis节点
2、关掉主服务的Redis节点
#关掉主节点的redis服务,查看其它两个从节点的sentinel.conf,看最后sentinel current-epoch 0
#其中,epoch数量为1的被重新推举成主节点,可以连接进去set成功
#恢复了主节点后,作为从节点运行 


#可以提供给客户端调用的接口命令:
$ redis-cli -p 26379
	#配置在哨兵节点里的主节点名字
	sentinel get-master-addr-by-name 主节点的名字

——————————————————

Redis集群(Redis Cluster)
3个节点,即每个虚拟机搭建2个redis实例
代码语言:javascript
代码运行次数:0
运行
复制
#安装redis服务
$ yum -y install gcc gcc-c++ tcl
$ tar -zxvf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make      
$ make test 
$ make PREFIX=/usr/local/redis install

#创建存放2个redis实例的目录
$ mkdir -p /data/{6378,6379}

#复制配置文件
$ cp -a 解压目录/redis-5.0.4/redis.conf /data/6378
$ cp -a 解压目录/redis-5.0.4/redis.conf /data/6379
$ vim /data/6378/redis.conf
	bind IP地址
	port 6378
	protected-mode no
	
	daemonize yes
	pidfile /data/6378/redis.pid
	logfile /data/6378/redis.log
	
	appendonly yes
	dir /data/6378  
	
	cluster-enabled yes
	cluster-config-file nodes.conf
	cluster-node-timeout 15000
		
$ vim /data/6379
	bind IP地址
	port 6379
	daemonize yes
	pidfile /data/6379/redis.pid
	logfile /data/6379/redis.log
	dir /data/6379
	appendonly yes
	protected-mode no   
	cluster-enabled yes
	cluster-config-file nodes.conf
	cluster-node-timeout 5000
	

#启动redis进程
$ ln -s /usr/local/redis/bin/* /usr/local/bin
$ redis-server /data/6378/redis.conf
$ redis-server /data/6379/redis.conf

#连接测试
$ redis-cli -p 6378
$ redis-cli -p 6379
创建redis集群
代码语言:javascript
代码运行次数:0
运行
复制
#创建3主3从的集群
$ ln -s /usr/local/redis/bin/*  /usr/local/bin
$ redis-cli --cluster create --cluster-replicas 1 192.168.66.24:6380 192.168.66.24:6379 192.168.66.25:6380 192.168.66.25:6379 192.168.66.26:6380 192.168.66.26:6379 
#其中, - create:创建一个新的集群 - replicas 1 :replicas参数指定集群中每个主节点配备几个从节点,这里设置为1

#连接测试
#连接任意一个节点:(-c通过集群连接) 
$ redis-cli -c -p port -h IP地址
#写入key-value值,以字符串类型为例
6379> set name cluster
#查看slot和节点的对应关系 
6379> cluster slots 
#查看key对应的slot,根据上个命令slot对应的机器,可以推出该key存在的机器
6379> cluster keyslot key
#查看集群里的节点信息
6379> cluster nodes

#查看集群中所有数据
$ redis-cli -c --cluster call 192.168.66.24:6378 keys \*
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis安装
    • 服务器
    • 客户端
  • Redis持久化
  • Redis数据类型操作
  • Redis主从配置
    • 主服务器:
    • 从服务器:
    • 验证主从结构:
  • Redis 哨兵(Redis Sentinel)
    • 搭建redis主从从结构
    • 配置各节点的哨兵节点
    • 测试
  • Redis集群(Redis Cluster)
    • 3个节点,即每个虚拟机搭建2个redis实例
    • 创建redis集群
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档