redis命令

安装操作:

wget http://download.redis.io/releases/redis-5.0.8.tar.gz
tar xzf redis-5.0.8.tar.gz
cd redis-5.0.8
make

操作步骤:
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
tar xzf redis-5.0.8.tar.gz
cd redis-5.0.8
sudo mv./redis-5.0.8 /usr/local/redis/
cd /usr/local/redis
sudo make
sudo make test
sudo  make install 
cd /usr/local/bin/
ls -all

redis-server redis 服务器
redis-cli redis 命令行客户端
redis-benchmark redis 性能测试工具
redis-check-aof  AOF 文件修复工具
redis-check-rdb RDB文件检索工具

sudo cp redis.conf  /etc/redis/redis.conf
sudo vi /etc/redis/redis.conf #配置文件(bind port)


**服务器端**
redis-server --help
sudo service  redis start 启动
sudo service redis stop    停止
sudo service redis restart  重启

**个人习惯**
ps -ef|grep redis  查看redis服务器进程
sudo kill -9 pid 杀死redis进程
**sudo redis-server /etc/redis/redis.conf** 指定加载的配置文件(用这种方式启动redis)


**客户端:**
redis-cli
redis-cli --help
redis-cli 链接redis
ping 运行测试命令
select n 切换数据库

redis 实现python交互

方法一:pip install redis

方法二:easy_install redis

方法三:wget  https://
unzip master.zip
cd redis-py-master
sudo python setup.py install
sr = strictRedis()

redis操作

1.在桌面上创建redis目录
2.使用pycharm打开redis目录
3.创建redis_string.py 文件
from redis import StrictRedis
if __name__ == "__main__":
	try:
		#创建StriceRedis对象,与redis服务器建立连接
		sr=strictRedis()
		#添加一个key:name, vlaue:itheima
		res=sr.set('name','itheima')
		print(res)
		res=sr.get('name')
		print(res)
		res=sr.set('name','itcast')
		print(res)
		#删除name及对应的值
		res=sr.delete('name')
		print(res)
		#删除多个键值对
		res=sr.delete('a1','a2')
		print(res)
		#获取数据库中的所有键
		res=sr.keys([patterns)
		print(res)
		
	except Exception as e:
		print(e)		

django存储session

1.安装包  pip install django-redis-session==0.5.6

2.修改setting文件,增加如下项
SESSION_ENGINE='redis_session.session'
SESSION_REDIS_HOST = 'localhost'
SESSION_REDIS_PORT = '8080'
SESSION_REDIS_DB = 2

3.测试
from django.http import HttpResponse
from django.shortcuts import render

def set_session(request):
	'''设置session'''
	request.session['username']='smart'
	request.session['age']=18
	
	return HttpResponse('设置session')
	
def get_session(request):
	'''获取session'''
	usrname=request.session['username']='smart'
	age=request.session['age']=18
	
	return HttpResponse(usrname+':'+str(age))
	
	
4. redis-cli -h localhost 8080

 

配置主从

1.ifconfig
2.修改etc/redis/redis.conf
   sudo vi redis.conf
   bind ip
3.重启redis服务
   sudo service redis stop
   sudo service etc/redis/redis.conf
4. 复制etc/redis/redis.conf
   sudo cp redis.conf ./slave.conf
5. 修改redis/redis.conf文件
    vi redis/redis.conf
6  编辑内容
	bind ip
	slaveof ip  port
	port 6378
7.redis服务
	sudo redis-server slave.conf
6. 查看主从关系
	redis-cli -h ip info Replication

数据操作

redis-cli -h ip -p 6379
redis-cli -h ip -p 8080
set aa aa   #在master上写数据
get aa    #在slave读数据

如图所示:

在这里插入图片描述

redis集群

概念: 一组通过网络链接的计算机共同对外提供服务,像一个独立的服务器。 提高处理的性能

redis级群在这里插入图片描述

Redis集群搭建的三种方式

一、单节点实例
  单节点实例还是比较简单的,平时做个测试,写个小程序如果需要用到缓存的话,启动一个Redis还是很轻松的,做为一个key/value数据库也是可以胜任的。单节点部署参照:http://www.cnblogs.com/yiwangzhibujian/p/7053840.html 中的初级教程。

二、主从模式(master/slaver)
  主从模式的简介和配置,此处不再说,

2.1 搭建方式
  主从模式的搭建还是很简单的,官网的介绍就更加简单了,只需要在配置文件中加上一行配置:

slaveof 192.168.1.1 6379
  指明master的ip和端口号就可以了,实际上真的这么简单。

2.2 其他配置
  在redis.conf中,还有一些关于主从的其他配置,按需配置即可。

首先谈谈我对主从模式的必要性:

主从模式的一个作用是备份数据,这样当一个节点损坏(指不可恢复的硬件损坏)时,数据因为有备份,可以方便恢复。
另一个作用是负载均衡,所有客户端都访问一个节点肯定会影响Redis工作效率,有了主从以后,查询操作就可以通过查询从节点来完成。
  对主从模式必须的理解(结论已经验证过,可以自行验证):

一个Master可以有多个Slaves
默认配置下,master节点可以进行读和写,slave节点只能进行读操作,写操作被禁止
不要修改配置让slave节点支持写操作,没有意义,原因一,写入的数据不会被同步到其他节点;原因二,当master节点修改同一条数据后,slave节点的数据会被覆盖掉
slave节点挂了不影响其他slave节点的读和master节点的读和写,重新启动后会将数据从master节点同步过来
master节点挂了以后,不影响slave节点的读,Redis将不再提供写服务,master节点启动后Redis将重新对外提供写服务。
master节点挂了以后,不会slave节点重新选一个master
  对有密码的情况说明一下,当master节点设置密码时:

客户端访问master需要密码
启动slave需要密码,在配置中进行配置即可
客户端访问slave不需要密码
2.1 主从节点的缺点
  主从模式的缺点其实从上面的描述中可以得出:

master节点挂了以后,redis就不能对外提供写服务了,因为剩下的slave不能成为master
  这个缺点影响是很大的,尤其是对生产环境来说,是一刻都不能停止服务的,所以一般的生产坏境是不会单单只有主从模式的。所以有了下面的sentinel模式。

三、sentinel模式
  sentinel模式的简介和配置,此处不再说,参照下面的博客:Redis Sentinel模式详解https://www.cnblogs.com/yiwangzhibujian/p/7053848.html。

sentinel的中文含义是哨兵、守卫。也就是说既然主从模式中,当master节点挂了以后,slave节点不能主动选举一个master节点出来,那么我就安排一个或多个sentinel来做这件事,当sentinel发现master节点挂了以后,sentinel就会从slave中重新选举一个master。

对sentinel模式的理解:

sentinel模式是建立在主从模式的基础上,如果只有一个Redis节点,sentinel就没有任何意义
当master节点挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置文件,其他slave的配置文件也会被修改,比如slaveof属性会指向新的master
当master节点重新启动后,它将不再是master而是做为slave接收新的master节点的同步数据
sentinel因为也是一个进程有挂掉的可能,所以sentinel也会启动多个形成一个sentinel集群
当主从模式配置密码时,sentinel也会同步将配置信息修改到配置文件中,不许要担心。
一个sentinel或sentinel集群可以管理多个主从Redis。
sentinel最好不要和Redis部署在同一台机器,不然Redis的服务器挂了以后,sentinel也挂了
sentinel监控的Redis集群都会定义一个master名字,这个名字代表Redis集群的master Redis。
  当使用sentinel模式的时候,客户端就不要直接连接Redis,而是连接sentinel的ip和port,由sentinel来提供具体的可提供服务的Redis实现,这样当master节点挂掉以后,sentinel就会感知并将新的master节点提供给使用者。

sentinel模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一台服务器存放不下的情况时,主从模式或sentinel模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个Redis实例中,就是下面要讲的。

四、cluster模式
  sentinel模式的简介和配置,此处不再说,参照下面的博客:Redis cluster模式详解https://www.cnblogs.com/yiwangzhibujian/p/7053851.html`

cluster的出现是为了解决单机Redis容量有限的问题,将Redis的数据根据一定的规则分配到多台机器。对cluster的一些理解:

cluster可以说是sentinel和主从模式的结合体,通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话,就需要六个Redis实例。
因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容
  这种模式适合数据量巨大的缓存要求,当数据量不是很大使用sentinel即可。

集群客户端命令(redis-cli -c -p port)
集群
cluster info :打印集群的信息
cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。
节点
cluster meet <ip> <port> :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> :从集群中移除 node_id 指定的节点。
cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。
cluster saveconfig :将节点的配置文件保存到硬盘里面。
槽(slot)
cluster addslots <slot> [slot ...] :将一个或多个槽( slot)指派( assign)给当前节点。
cluster delslots <slot> [slot ...] :移除一个或多个槽对当前节点的指派。
cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot <slot> node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给
另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot <slot> migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot <slot> importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot <slot> stable :取消对槽 slot 的导入( import)或者迁移( migrate)。
键
cluster keyslot <key> :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot <slot> :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot <slot> <count> :返回 count 个 slot 槽中的键  

四、集群中Master的下线及恢复
1、Master下线后,其对应的Slaver节点会自动变为Master节点
在这里插入图片描述

2、原来的Master重启后变成Slaver节点,并是原来Master节点的Slaver节点
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值