下载rdis文件 redis-3.0.7.tar.gz
redis安装
- 在虚拟机创建redis文件夹
mkdir –p /usr/local/src/redis
- 进入文件夹
cd /usr/local/src/redis
- 通过Xhell传输redis到虚拟机中,或者通过CentOS tools可以直接拖拽文件到虚拟机的制定位置
- 解压 redis文件
tar xzf redis-3.0.7.tar.gz
- 解压完毕后,进入redis-3.0.7文件夹
cd redis-3.0.7
- 文件需进行编译
make
- 进行安装
make install
在实际安装中,Xhell与CentOS连接无论如何都不能进行连接,后来经过排查,发现是没有开启22的端口,
端口的开启在下文会有介绍。
**
redis服务配置
**
1.修改配置文件
配置文件:redis.conf
设置模式
vi redis.conf
daemonize yes #默认为no
端口配置:
默认6379,一般无需修改
配置数据库数量:
Redis默认开启16个数据库,不能像mysql自定义数据库名称,只能是数值,不能修改。
配置内存大小:
会生成一个和内存大小一样的文件。
maxmemory 200mb 在真实环境必须部署,否则物理内存会被耗尽。一般配置200mb/500mb/1gb/2gb。可以分散到多台服务器,和其它业务共享服务器,以充分利用资源。同时因为分散,防止单点故障,造成大量缓存失效。
maxmemory 200mb 在364行,必须设置。
redis启动
redis-server有两种方式启动,一般我习惯于在redis文件夹运行这个命令,在其他地方运行是否可以 还尚未尝试
redis-server #默认找redis.conf配置文件
redis-server redis6380.conf #指定配置文件,这样可以启动多个实例
redis-cli通样也有两种方式,在一个系统运行多个redis实例时,我们通常 只需制定端口号 如
redis-cli -p 6380
redi-cli命令运行后
执行ping命令,
如果出现pong,那么 说明服务已成功开启
默认连接:IP 127.0.0.1 端口 6379
redis-cli
指定IP端口:
redis-cli –h 127.0.0.1 –p 6379
使用ping命令测试与客户端和服务器链接是否正常
redis-cli ping
redis在一个物理节点启动两个实例
cd /usr/local/src/redis/redis-3.0.7
复制redis的配置文件,并命名为redis6380
cp redis.conf redis6380.conf
将redis6380文件中的端口改为6380
redis端口的修改
配置防火墙,开启80端口、3306端口
CentOS 7 默认使用firewalld来管理iptables规则,由于防火墙规则变动的情况很少,动不动态变得无所谓了。但是习惯是魔鬼,跟之前不一样,总是感觉不太习惯。
systemctl disable firewalld
yum remove firewalld -y
使用下面的办法来恢复原来的习惯,同时解决iptables开机启动的问题。
yum install iptables-services -y
systemctl enable iptables
这样的话,iptables服务会开机启动,自动从/etc/sysconfig/iptables 文件导入规则。
为了让/etc/init.d/iptables save 这条命令生效,需要这么做
cp /usr/libexec/iptables/iptables.init /etc/init.d/iptables
/etc/init.d/iptables save
而chkconfig iptables 命令会自动重定向到sytemctl enable iptables
打开3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save #修改生效
/etc/init.d/iptables status #查看配置
参考
**
Jedis连接Redis
简单的连接,可用作测试是否连接成功
@Test
public void test(){
//创建Jedis对象
Jedis jedis=new Jedis("192.168.58.128",6379);
String r=jedis.get("a6688");
System.out.println(r);
jedis.close();
}
连接失败,一般来说都应该先检查redis的端口是否已经开启。
/etc/init.d/iptables status
总共开启了两个虚拟机,其中一个虚拟机开启了两个redis实例。
@Test //池化
public void shared(){
//构造一个池的配置对象
JedisPoolConfig poolConfig=new JedisPoolConfig();
poolConfig.setMaxTotal(200);
//存储配置的信息
List<JedisShardInfo> listInfo=new ArrayList<JedisShardInfo>();
JedisShardInfo info1=new JedisShardInfo("192.168.58.129", 6379);
listInfo.add(info1);
JedisShardInfo info2=new JedisShardInfo("192.168.58.129", 6380);
listInfo.add(info2);
JedisShardInfo info3=new JedisShardInfo("192.168.58.128", 6379);
listInfo.add(info3);
ShardedJedisPool pool=new ShardedJedisPool(poolConfig, listInfo);
ShardedJedis jedis=pool.getResource();
for(int i=0;i<10000;i++){
jedis.set("a"+i,"i");
}
// String r=jedis.get("a");
// System.out.println(r);
jedis.close();
}