Redis

①Redis简介

redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache 、memcached 、MongoDB等。

②安装

  1. 安装gcc 

Redis 是 c 语言开发的。安装 redis 需要 c 语言的编译环境。如果没有 gcc 需要在线安装。

yum install gcc-c++

      2.使用yum命令安装 ruby  (我们需要使用ruby脚本来实现集群搭建)

Ruby,一种简单快捷的面向对象面向对象程序设计脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 PerlSmalltalkEiffelAda以及 Lisp 语言。由 Ruby 语言本身还发展出了JRubyJava平台)、IronRuby.NET平台)等其他平台的 Ruby 语言替代品Ruby的作者于1993224日开始编写Ruby,直至199512月才正式公开发布fj新闻组)。因为Perl发音与6月诞生石pearl珍珠)相同,因此Ruby7月诞生石ruby红宝石)命名

RubyGems简称gems,是一个用于对 Ruby组件进行打包的 Ruby 打包系统

yum install ruby
yum install rubygems

      3.将redis源码包上传到 linux 系统  ,解压redis源码包    /usr/local/redis

      4.编译redis源码  ,进入redis源码文件夹,应该是不可以重复编译的

make

     

       5.安装目录

make install PREFIX=/usr/local/redis

       6.redis的启动

前端启动:在redis的安装目录下直接启动redis-server不常用

[root@localhost bin]# ./redis-server

后台启动:

把/../redis-3.0.0/redis.conf复制到/usr/local/redis/bin目录下

[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/

修改配置文件:

[root@localhost bin]# ./redis-server redis.conf

查看

[root@localhost ~]# ps -ef | grep redis

          7.连接

[root@localhost bin]# ./redis-cli

默认连接localhost运行在6379端口的redis服务。

[root@localhost bin]# ./redis-cli -h 192.168.25.153 -p 6379

-h:连接的服务器的地址

-p:服务的端口号

关闭redis:[root@localhost bin]# ./redis-cli shutdown

搭建集群

redis-cluster投票:容错,超过半数的节点通过ping命令进行投票,反应问题节点的健康情况,有问题则查看有没有备份节点,没有的话,歇着了。。。

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.至少要有三个节点

(3)客户端与redis节点直连,不需要中间proxy.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot,cluster 负责维护node<->slot<->value

将这16384个槽分布到不同的服务器上,有存操作时,通过算法算出分配的槽,进行整体均匀的分配

Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。

      创建目录/usr/local/redis-cluster目录,  安装6个redis实例,分别安装在以下目录,单个只配置一个就行

           /usr/local/redis-cluster/redis-1

           /usr/local/redis-cluster/redis-2

           /usr/local/redis-cluster/redis-3

           /usr/local/redis-cluster/redis-4

           /usr/local/redis-cluster/redis-5

           /usr/local/redis-cluster/redis-6

以第一个redis实例为例,命令如下

make install PREFIX=/usr/local/redis-cluster/redis-1

配置集群

  1. 修改每个redis节点的配置文件redis.conf

           修改运行端口为7001 (7002 7003 .....)

           

   将cluster-enabled yes 前的注释去掉(632行)

       2.启动每一个redis实例

cd /usr/local/redis-cluster/redis-1/bin/
./redis-server redis.conf

查看启动情况

[root@localhost ~]# ps -ef | grep redis

       3.上传redis-3.0.0.gem 安装 ruby用于搭建redis集群的脚本。

[root@localhost ~]# gem install redis-3.0.0.gem

       4.使用 ruby 脚本搭建集群。

./redis-trib.rb create --replicas 1 192.168.25.135:7001 192.168.25.135:7002 192.168.25.135:7003
192.168.25.135:7004 192.168.25.135:7005 192.168.25.135:7006

    

连接集群

redis01/bin/redis-cli -h 192.168.25.134 -p 7001 -c

-c:代表连接的是 redis 集群

 

测试值的存取:

(1)从本地连接到集群redis  使用7001端口 加 -c 参数

(2)存入name值为abc ,系统提示此值被存入到了7002端口所在的redis (槽是5798)

(3)提取name的值,可以提取。

(4)退出(quit)

(5)再次以7001端口进入 ,不带-c

(6)查询name值,无法获取,因为值在7002端口的redis上

(7)我们以7002端口进入,获取name值发现是可以获取的,而以其它端口进入均不能获取

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

③Redis中的数据类型

Redis操作:通过键来管理内存中的值操作
cd /usr/local/src/redis/bin→./redis-server redis.conf
./redis-cli  此时连接的默认的localhost:127.0.0.1:6379
./redis-cli –h 192.168.25.162 –p 6379  远程连接
复习
ping  检查redis健康情况,返回PANG就OK
exit退出
数据类型(5种value的类型):string hash set list sortset
string
set str1 abc
get str1  不用遍历,直接存取,效率高。保存在内存中,以字符串进行设置,获取得到字符
incr key1  创建key1并自增后值为1,主键策略方便
decr key1  获得值并减一
keys *  查看所有的键
del key1  删除
hash:键是string,值是map(又是一个键值对)
	hset  key1 field1 1  设置值
	hget  key1 field1  获取值
	hkeys  key1  查看key1下所有的键
	hvals  key1  查看key1下所有的值
	hgetall key1  查看所有键值
	hdel key1 field1  删除
list:一个键对应一个list,内容可以重复
	lpush list1 a b c  从左边添加元素,后进先出
	rpush list2 d e f  从右边添加元素
	lrange list1 0 -1  查看所有元素
	lpop list1  从左边取一个元素,取出之后该元素被删除
	rpop list1  从右边取一个元素,同上↑
set:	无序,不重复
	sadd set1 a b c a  添加元素,并去除重复
	srem set1 a  删除元素
	smembers set1  查看所有元素
	sdiff seta setb  去除seta中存在的setb中的元素,并返回seta其他元素
	sinter seta setb  获得交集
	sunion seta setb  获得并集
sortset:元素不重复,并排序过的,耗费的性能是最高的,前边是分数,后边是元素,根据分数进行升序排序
	zadd zset1 1 a 2 b 3 c 添加,并根据分数进行升序排序  →a b c
	zrange zset1 0 -1  查看所有记录
	zrem zset1 a  删除元素
	zrevrange zset1 0 -1  降序排列
	zrevrange zset1 0 -1 withscores  降序排列,并获得分数
设置缓存过期时间
	key *
	expire key1 100  设置过期时间为100秒
	ttl key1  查看剩余的过期时间,值为-1,表示永久保存,值为-2表示不存在,正数表示正在倒计时
	Persist kye1  使正在倒计时的key1,永久保存

④Redis中的持久化方案

Redis的所有数据都是保存到内存中的。

Rdb:快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。

aof形式:append only file。把所有对redis数据库操作的命令,增删改操作的命令。保存到文件中。数据库恢复时把所有的命令执行一遍即可。

Rdb:

redis.conf配置文件中配置。/usr/local/redis/bin/redis.conf

vim redis.conf

/save 回车  查询包含save的内容

Aof的配置:每秒进行一次磁盘操作将操作保存在bin目录下appendonly.aop中,性能低下,很少发生丢失的情况,默认不开启。还可以进行数据恢复操作:只要将redis.confappendonly no  改为yes,并重启redis,bin目录下就会自动生成一个appendonly.aof 的文件

两种持久化方案同时开启使用aof文件来恢复数据库。搭建集群的时候最好删除原先的appendonly.aof和dump.rdb

SecureCRT安装参考文档

本机安装目录:F:\develop_web\SecureCRT

https://www.cnblogs.com/blueberry006/p/7631694.html

https://www.cnblogs.com/yjd_hycf_space/p/7729796.html

两篇结合看,注意两点:

未破解第一次点的时候,直接点next,才能找到以下图标

SecureCRT默认上传路径有中文是无法上传的,是编码问题,改一下编码即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值