Redis与Spring整合

来源:互联网 发布:洗牌算法 编辑:程序博客网 时间:2024/05/20 23:36

Redis缓存

从数据库查询,加大数据库服务器压力,查询效率较低,用户体验度较
差。可以加上 redis 缓存解决这个问题。
查询数据库,先去 redis 缓存服务器查询,如果 redis 缓存服务器没有数据,在数据库查询,然后把数据再放入缓存。

Redis数据结构

Redis 是 key value 类型的非关系型数据库。
String 类型:value 是字符类型数据。
Hash 类型:存储对象,key,field,value.
List 类型:链表结构,时候插入数据。有序的,数据可以重复
Set 类型:数据不可重复。
Sortsets:有序 set 集合,根据分数排序,元素值不允许重复,分数可以重复。

Redis安装

安装单机版 redis

1) 第一步:导入 redis 安装包
2) 第二步:解压 redis 安装包
3) 第三步:进入 redis 解压目录进行编译
a) 编译命令:make
4) 第四步:安装
a) 安装命令:make install PREFIX=/usr/lcal/hadoop/redis
5) 启动
a) 前台启动
b) 后台启动
i. 修改配置文件:后台启动模式。

安装 redis 集群

1) 创建 8 个文件目录,文件目录命名:7001……7008
a) 目录名称要求和 redis 服务端口一致。
b) 每一个目录中都有 redis 服务
2) 开启每一个目录下 redis 服务集群功能
3) 修改每一个目录下 redis 服务端口
a) 服务端口和目录相同
port 7001…………………
4) 删除每一个服务持久化文件(rdb。aof)
a) 集群初始化会受到数据影响。保持开始集群为空。
5) 启动每一个 redis 服务
a) 启动命令:./redis-server redis.conf
6) 从 redis 解压目录中拷贝创建集群命令:redis-trib.rb
a) 拷贝 redis-trib.rb 到 redis-Cluster 集群目录
7) 创建集群
./redis-trib.rb create –replicas 1 192.168.66.66:7001 192.168.66.66:7002 192.168.66.66:7003
192.168.66.66:7004 192.168.66.66:7005 192.168.66.66:7006
8) 添加主节点集群
./redis-trib.rb add-node 192.168.66.66:7007 192.168.66.66:7001
9) 添加从节点集群
./redis-trib.rb add-node –slave –master-id 5c2d88f191ae0682d8a6ebb4b57ae0b080b669f0
192.168.66.66:7008 192.168.66.66:7001

连接集群

1) 启动集群
在 redis-Cluster 目录下创建启动集群批处理文件:start-all.sh

    cd 7001/bin    ./redis-server redis.conf    cd ../../7002/bin    ./redis-server redis.conf    cd ../../7003/bin    ./redis-server redis.conf    cd ../../7004/bin    ./redis-server redis.conf    cd ../../7005/bin    ./redis-server redis.conf    cd ../../7006/bin    ./redis-server redis.conf    cd ../../7007/bin    ./redis-server redis.conf    cd ../../7008/bin    ./redis-server redis.conf

2) 运行启动 sh 文件
a) ./start-all.sh
b) Sh start-all.sh

3) 登录集群
a) 登录命令:./redis-cli –c –h 192.168.66.66 –p 7001

4)查询集群节点信息
192.168.66.66:7001> cluster nodes

测试集群

    @Test    public void linkClusterRedis(){        //创建连接池对象        JedisPoolConfig poolConfig = new JedisPoolConfig();        //设置最大连接数        poolConfig.setMaxTotal(20);        //设置最大空闲数        poolConfig.setMaxIdle(2);        //创建封装主机ip和端口nodes的set集合        Set<HostAndPort> nodes = new HashSet<HostAndPort>();        nodes.add(new HostAndPort("192.168.66.66", 7001));        nodes.add(new HostAndPort("192.168.66.66", 7002));        nodes.add(new HostAndPort("192.168.66.66", 7003));        nodes.add(new HostAndPort("192.168.66.66", 7004));        nodes.add(new HostAndPort("192.168.66.66", 7005));        nodes.add(new HostAndPort("192.168.66.66", 7006));        nodes.add(new HostAndPort("192.168.66.66", 7007));        nodes.add(new HostAndPort("192.168.66.66", 7008));        //创建连接集群jedisCluster对象        JedisCluster jedisCluster = new JedisCluster(nodes,         poolConfig);        //给redis集群设置值        jedisCluster.set("address", "beijing");        //获取redis集群中值        String address = jedisCluster.get("address");        System.out.println(address);    }

Jedis整合Spring

Jedis 连接 redis 服务器,实现功能添加缓存。

整合单机版

    <!-- 整合单机版redis -->        <!-- 创建jedisPoolConfig配置对象 -->        <bean id="poolConfig"        class="redis.clients.jedis.JedisPoolConfig">            <property name="maxTotal" value="20"></property>            <property name="maxIdle" value="2"></property>        </bean>        <!-- 创建jedisPool连接单机版redis -->        <bean id="jedisPool" class="redis.clients.jedis.JedisPool">            <constructor-arg name="poolConfig"        ref="poolConfig"></constructor-arg>            <constructor-arg name="host"        value="192.168.66.66"></constructor-arg>            <constructor-arg name="port"        value="6379"></constructor-arg>        </bean>

整合集群版

    <!-- 整合单机版redis -->        <!-- 创建jedisPoolConfig配置对象 -->        <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">            <property name="maxTotal" value="20"></property>            <property name="maxIdle" value="2"></property>        </bean>        <!-- 配置集群版redis -->        <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.66.66"></constructor-arg>                        <constructor-arg name="port" value="7001"></constructor-arg>                    </bean>                    <bean class="redis.clients.jedis.HostAndPort">                        <constructor-arg name="host"                value="192.168.66.66"></constructor-arg>                        <constructor-arg name="port" value="7002"></constructor-arg>                </bean>                    <bean class="redis.clients.jedis.HostAndPort">                        <constructor-arg name="host"                value="192.168.66.66"></constructor-arg>                        <constructor-arg name="port" value="7003"></constructor-arg>                    </bean>                    <bean class="redis.clients.jedis.HostAndPort">                        <constructor-arg name="host"                value="192.168.66.66"></constructor-arg>                        <constructor-arg name="port" value="7004"></constructor-arg>                    </bean>                    <bean class="redis.clients.jedis.HostAndPort">                        <constructor-arg name="host"                value="192.168.66.66"></constructor-arg>                        <constructor-arg name="port" value="7005"></constructor-arg>                    </bean>                    <bean class="redis.clients.jedis.HostAndPort">                        <constructor-arg name="host"                value="192.168.66.66"></constructor-arg>                        <constructor-arg name="port" value="7006"></constructor-arg>                    </bean>                    <bean class="redis.clients.jedis.HostAndPort">                        <constructor-arg name="host"                value="192.168.66.66"></constructor-arg>                        <constructor-arg name="port" value="7007"></constructor-arg>                    </bean>                    <bean class="redis.clients.jedis.HostAndPort">                        <constructor-arg name="host"                value="192.168.66.66"></constructor-arg>                        <constructor-arg name="port" value="7008"></constructor-arg>                    </bean>                </set>            </constructor-arg>            <constructor-arg name="poolConfig" ref="poolConfig"></constructor-arg>        </bean>

Jedis接口服务

        public interface JedisService {            //String类型            public String set(String key,String value);            //String get            public String get(String key);            //hash类型            public Long hset(String key, String field, String value);            //hash get            public String hget(String key, String field);            //hash delete            public Long hdel(String key,String fields);            //设置数据过期            public Long expire(String key,int seconds);            //测试过期时间过程            public Long ttl(String key);        }
0 0