Redis安装配置与使用

安装单机版

导入压缩包后
解压:   tar -zxvf redis-3.0.0.tar.gz
删除包: rm -rf redis-3.0.0.tar.gz
安装编译环境  gcc-c++
编译    [root@localhost redis-3.0.0]# make
安装到指定位置  [root@localhost redis-3.0.0]# make install PREFIX=/usr/local/src/myapp/redis
复制一份做集群使用   [root@localhost myapp]# cp -r redis redis_backup
复制一份配置文件  [root@localhost bin]# cp ../../redis-3.0.0/redis.conf ./
修改配置文件   vi redis.conf
将daemonize no改为daemonize yes使redis可以后端启动
启动服务端  [root@localhost bin]# ./redis-server redis.conf
启动客户端  [root@localhost bin]# ./redis-cli

搭建redis集群

至少需要留个虚拟机来搭建,过于麻烦,我们使用一个虚拟机搭建伪集群

模拟使用6个端口(后面的为备份服务)

7001----7004

7002----7005

7003----7006

创建文件夹存放所有redis  [root@localhost myapp]# mkdir redis-cluster
复制备份的新redis    [root@localhost myapp]# cp -r redis_backup redis-cluster/
重命名    [root@localhost redis-cluster]# mv redis_backup redis01
拷贝配置文件  [root@localhost redis-cluster]# cp ../redis-3.0.0/redis.conf ./redis01/bin/
修改配置文件  [root@localhost redis01]# vi ./bin/redis.conf 
             daemonize no改为daemonize yes
             port 6379改为port 7001
             把REDIS CLUSTER下的cluster-enabled yes注释消除
复制redis    [root@localhost redis-cluster]# cp -r redis01/ redis02
             [root@localhost redis-cluster]# cp -r redis01/ redis03
             [root@localhost redis-cluster]# cp -r redis01/ redis04
            [root@localhost redis-cluster]# cp -r redis01/ redis05
            [root@localhost redis-cluster]# cp -r redis01/ redis06
分别修改每个redis的配置文件(只修改端口号)
创建批启动文件 [root@localhost redis-cluster]# touch redis-start.sh
修改          [root@localhost redis-cluster]# vi redis-start.sh
            内容cd redis01/bin
                ./redis-server redis.conf
                cd ../../
                cd redis02/bin
                ./redis-server redis.conf
                cd ../../
                cd redis03/bin
                ./redis-server redis.conf
                cd ../../
                cd redis04/bin
                ./redis-server redis.conf
                cd ../../
                cd redis05/bin
                ./redis-server redis.conf
                cd ../../
                cd redis06/bin
                ./redis-server redis.conf
                cd ../../
创建批结束文件 [root@localhost redis-cluster]# touch redis-shutdown.sh
修改   [root@localhost redis-cluster]# vi redis-shutdown.sh 
内容        redis01/bin/redis-cli -p 7001 shutdown
            redis01/bin/redis-cli -p 7002 shutdown
            redis01/bin/redis-cli -p 7003 shutdown
            redis01/bin/redis-cli -p 7004 shutdown
            redis01/bin/redis-cli -p 7005 shutdown
            redis01/bin/redis-cli -p 7006 shutdown
为两个批文件添加执行权限  
    [root@localhost redis-cluster]# chmod u+x redis-start.sh
    [root@localhost redis-cluster]# chmod u+x redis-shutdown.sh


安装ruby运行环境  yum install ruby
                yum install rubygems
将 redis-3.0.0.gem.tar.gz 上传到根目录
安装插件    [root@localhost ~]# gem install redis-3.0.0.gem 
拷贝redis-3.0.0/src下的ruby脚本到redis-cluster下
        [root@localhost ~]# cp /usr/local/src/myapp/redis-3.0.0/src/redis-trib.rb /usr/local/src/myapp/redis-cluster/
启动 [root@localhost redis-cluster]# ./redis-start.sh 
ruby搭建  [root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.11.102:7001 192.168.11.102:7002 192.168.11.102:7003 192.168.11.102:7004 192.168.11.102:7005 192.168.11.102:7006
创建完成
进入
[root@localhost bin]# ./redis-cli -p 7001 -c

spring中引用

xml配置

<!-- 单机版redis配置(连接池) -->
	<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
		<constructor-arg name="host" value="192.168.11.102"></constructor-arg>
		<constructor-arg name="port" value="6379"></constructor-arg>
	</bean>

	<bean id="jedisClientPool" class="com.igeek.util.JedisClientPool">
		<!-- 注入jedisPool连接池对象 -->
		<property name="jedisPool" ref="jedisPool"></property>
	</bean>

	<!-- 集群版本 -->
	<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
		<constructor-arg name="nodes">
			<set>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.11.102"></constructor-arg>
					<constructor-arg name="port" value="7001"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.11.102"></constructor-arg>
					<constructor-arg name="port" value="7002"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.11.102"></constructor-arg>
					<constructor-arg name="port" value="7003"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.11.102"></constructor-arg>
					<constructor-arg name="port" value="7004"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.11.102"></constructor-arg>
					<constructor-arg name="port" value="7005"></constructor-arg>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.11.102"></constructor-arg>
					<constructor-arg name="port" value="7006"></constructor-arg>
				</bean>
			</set>
		</constructor-arg>
	</bean>
	<bean id="jedisClientCluster" class="com.igeek.util.JedisClientCluster">
		<property name="jedisCluster" ref="jedisCluster"></property>
	</bean>

在需要使用的service中通过autowired注入

    //redis集群版本
    @Autowired
    private JedisClientCluster jedisClientCluster;
    //redis单机版本
    @Autowired
    private JedisClientPool jedisClientPool;

 

内容缓存与缓存同步

//范例1.利用缓存机制的业务
public List<TbContent> selectContentsByCid(Long categoryId) {
		String contentString = jedisClientCluster.hget("CONTENT", categoryId+"");
		if(StringUtils.isNotBlank(contentString)){
			System.out.println("从缓存中查询");
			//不为空,String 转 对象
			return JsonUtils.jsonToList(contentString, TbContent.class);
		}
		List<TbContent> contents = contentMapper.selectByCid(categoryId);
		//存入缓存
		jedisClientCluster.hset("CONTENT", categoryId+"",JsonUtils.objectToJson(contents));
		System.out.println("从数据库中查询");
		return contents;
	}
//范例2.缓存同步
public BuyResult addContent(TbContent content) {
		contentMapper.insert(content);
		//缓存同步(做 新增,删除,修改 业务时应删除对应的缓存)
		jedisClientCluster.hdel("CONTENT", content.getCategoryId()+"");
		return BuyResult.ok();
	}

在使用RedisDesktopManager工具连接Redis时,如果连接不成功的话,可能是6379端口未开启,如下时CentOS6的解决办法

 /sbin/iptables -I INPUT -p tcp --dport  6379 -j ACCEPT          写入修改

 /etc/init.d/iptables save                                                                保存修改

  service iptables restart                                                                重启防火墙,修改生效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值