Redis学习之路


Redis 简介


Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?
Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

Redis的安装(单机)
注意:本文章是使用Centos7进行安装Redis。安装使用的Redis版本当前最新版本 redis-4.0.11.tar.gz。如果需要在Window和Mac上面安装的,暂时不提供。本章是在虚拟中安装Redis,如果真实安装在
服务器,本文章只当参考,如果有未能达到要求的地方,可以发送有邮件到:wsb8878@gmail.com或者wsb8878@163.com。

首先我们来安装前的准备,使用VMware Workstation Pro 安装Centos7  (CentOS-7-x86_64-Minimal-1804.iso)
进入http://mirrors.hust.edu.cn/centos/7/isos/x86_64/ 选择轻量的级的版本下载。(为了方便快速学习,请先安装Centos7)
下图是作者安装的单机centos7

安装Redis我们先来看看能不能进行上网,
$ ping www.baidu.com
PING www.a.shifen.com (115.239.210.27) 56(84) bytes of data.
64 bytes from 115.239.210.27 (115.239.210.27): icmp_seq=1 ttl=128 time=9.89 ms
64 bytes from 115.239.210.27 (115.239.210.27): icmp_seq=2 ttl=128 time=10.2 ms

如果出现上述情况,说明已连接网络,我们可以进行下面的操作。

/** 对系统进行更新,此处需要点时间 */
$ yum update       

更新系统之后,我们需要下载最新版本的Redis,可以进入官网 http://www.redis.net.cn/download/去下载最新的版本 redis-4.0.11.tar.gz,

或者是通过下列命令wget命令进行下载。如果出现 

$ wget http://download.redis.io/releases/redis-4.0.11.tar.gz
-bash: /usr/bin/wget: No such file or directory
/** 如果出现下列错误 , 我们需要安装wget命令 */
$ yum -y install wget 
/** 为了更方便操作我们这里将 vim命令一并安装 */
$ yum -y install wget
$ wget http://download.redis.io/releases/redis-4.0.11.tar.gz

出现下列表已安装

下载完Redis之后,我们对Redis进行安装使用,通过命令进行进行解压,然后移动软件安装目录中/usr/lib/

$ tar -zxvf redis-4.0.11.tar.gz
$ ls 
$ mv redis-4.0.11 /usr/lib/
$ cd /usr/lib/redis-4.0.11/
/** 进入RedisHome 可以进入进行安装,编译之后可以进入src目录启动redis$或者直接使用命令*/
$ make && make install
/** 如果出现问题需要使用gcc,则需要安装gcc ( yum -y install gcc ) 执行 make -j MALLOC=libc && make test
*/
$ ./redis-server

出现上述情况,证明上述Redis服务器已启动,我们可以进行Redis验证。

如果我们使用CTRL+C退出,Redis将会退出当前进程。

此时我们将Redis的配置文件修改成的后台允许运行。

$ cd /usr/lib/redis-4.0.11/
$ ls
$ vim redis.conf

找到文件内容中的daemon参数修改成 yes

修改完之后通过   :wq  保存文件。

保存文件之后,我们进入Redis目录下进行redis后台启动.注意启动时需要指定配置文件

$ cd /usr/lib/redis-4.0.11/
$ redis-server redis.conf
$ ps -ef |grep redis

说明redis 已经后台启动,我们可以进行访问。

$ redis-cli
redis $ SET foo "hello"
OK
redis $ GET foo
"hello" 

此刻,我们已安装了单机的Redis

 验证单机

 我们通过工具来访问Redis

 

此时出现Window连接不上Redis原因有两个,一是没有闭关防火墙,第二需要修改redis的配置: protected-mode设置成no ,再注意 #bing 127.0.0.1 。

/** 关闭防火墙,查看访问防火墙的状态,开机关闭防火墙 */
$ systemctl stop firewalld
$ systemctl status firewalld
$ systemctl disable firewalld
$ vim /usr/lib/redis-4.0.11/redis.conf
/** 找到下文件 */
bind 127.0.0.1 > #127.0.0.1
protected-mode yes > protected-mode no
/** 使用 :wq 保存文件 */

修改完之后,使用命令将Redis服务停止,之后再启动。

$ ps -ef|grep redis

  $ kill -9 7348 

/** 强制停止该进程(7348), 注意每个人的机器进程号都不一样  */

$ cd /usr/lib/redis-4.0.11/
$ redis-server redis.conf
$ ps -ef |grep redis
 
   
  
 
 

 再次使用客户端进行访问

验证数据,此时在服务器添加数据,在客户端查询数据。

此时,单机版的已经完成了。

小小总结:

  注意,安装Redis如果想外部访问一定关闭防火墙,如果您不想关闭防火墙,那就到防火墙中配置对应的访问IP。

redis的安装(集群) 

安装集群之前,先要说明注意事项,因redis的要求,必须最少6个节点才能进行集群,根据你的要求,是看配置多少台机器,你可以选择6台或者选择一台。

 本文章使用的是两台服务器 192.168.87.146,192.168.87.134,

192.168.87.146中添加三个节点,7001,7002,7003三个端口的节点。

192.168.87.134中添加三个节点,7001,7002,7003三个端口的节点。

/** 两台机器下载Redis包 */
$ wget http://download.redis.io/releases/redis-4.0.11.tar.gz
$ tar -zxvf
redis-4.0.11.tar.gz
$ mv redis-4.0.11 /usr/lib/
$ cd /usr/lib/redis-4.0.11
解压完Redis之后我们进行安装 ,注意的是,我们需要对Redis的内容测试通过,才能进行集群安装,不然后会使用会出各种坑。
将系统的内容进行更新,安装依赖插件,此时安装需要时间,我们更新完之后。如果我们需要清空原有的Redis的编译的代码重新进行编译。
$ yum install -y gcc g++ gcc-c++ make tcl
$ yum -y update
$ make clean
$ make distclean
$ make -j MALLOC=libc && make test
$ cd ./src
$ make install

(make test 需要全部通过才能进行启动使用,Redis。)

 

显示 all tests passed without errors; 说明测试通过。

出现上列图,说明已经安装成功。

 

Ruby集群

安装Redis之后,我们需要使用Ruby来建议Redis的集群,所以我们这边需要安装Ruby,但需要Ruby需要2.2.2以上的版本,在这里不多作介绍

 安装 rpm进行下载Ruby

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
$ \curl -sSL https://get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile
$ yum -y install ruby ruby-devel rubygems rpm-build

/** 安装2.2.2以上的Ruby */
$ curl -L get.rvm.io | bash -s stable 
$ source /usr/local/rvm/scripts/rvm
$  rvm list known

$ rvm install 2.3.3 

$ rvm use 2.3.3

$ gem install redis

/** 一定要记得关闭防火墙连接 */

$ systemctl stop firewalld

$ systemctl disable firewalld

 已经Ruby安装成2.3.3 版本。

 

安装Redis集群目录

创建Redis使用的目录

$ rm -rf /data/redis/
$ mkdir -p /data/redis /data/redis/7001 /data/redis/7002 /data/redis/7003  /data/log/ /etc/redis

# 集群通信端口为在各服务器的端口加10000 关键集群配置

cd /usr/lib/redis-4.0.11/
vim redis.conf
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
/* nodes-7000.conf为集群创建后自动生成,根据下列代码快速进修改*/

在/etc/redis/目录下创建多个文件

cd /etc/redis
cat <<EOF > /etc/redis/redis.conf
bind 192.168.87.134
protected-mode yes
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_7000.pid
loglevel notice
logfile "/data/log/redis_7000.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis/7000
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
EOF

#######################

创建对应的多个文件

192.168.87.134

cp redis.conf ./redis-7001.conf
cp redis.conf ./redis-7002.conf
cp redis.conf ./redis-7003.conf

/**  修改当前对应的参数   */

/** 如果是另外一台机器则IP需要更改 */
bind 192.168.87.134
port 7001
cluster-config-file nodes-7001.conf
pidfile /var/run/redis_7001.pid
logfile "/data/log/redis_7001.log"
dir /data/redis/7001

 修改文件之后启动文件

 

$ yum -y install net-tools
$ redis-server redis-7001.conf
$ redis-server redis-7002.conf
$ redis-server redis-7003.conf
$ netstat -tnlp | grep redis

 

同理在另外一台服务器也创建操作。

 

$ /usr/lib/redis-4.0.11/src/redis-trib.rb create --replicas 1 192.168.87.134:7001 192.168.87.134:7002 192.168.87.134:7003 192.168.87.146:7001 192.168.87.146:7002 192.168.87.146:7003

中间输入 yes

显示当前界面说明安装成功。

 说明已经安装成功。

 

 

测试

 

$ redis-cli -c -h 192.168.87.134 -p 7001
redis $ SET foo "hello"

控制台显示下列结果

 

此刻,做为一个新手,奇迹是见证了,如果您是大牛,您就笑笑吧。

Java连接代码,请参考: https://github.com/wsb878/Redis.git

 

抱歉
本文章紧提供学习,如果真实安装在服务器,本文章只当参考,如果有未能达到要求的地方,可以发送有邮件到:wsb8878@gmail.com或者wsb8878@163.com。作者花名:戈森


转载于:https://www.cnblogs.com/lanceWu/p/9546229.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值