
简单说redis(下)
发布日期:2021-05-06 17:27:55
浏览次数:28
分类:技术文章
本文共 9015 字,大约阅读时间需要 30 分钟。
我之前写过一篇当初本来是要写下的,后来工作原因,忘了.现在重新补上.
在这过程中出现了1.linux安装
1.下载wget http://download.redis.io/releases/redis-3.2.8.tar.gz2.解压tar -zxvf redis-3.2.8.tar.gz -C ../servers/3.安装c++yum -y install gcc-c++4.安装tclyum -y install tcl5.编译make编译完后测试make test6.修改配置//先创建两个目录mkdir -p /export/servers/redis-3.2.8/logsmkdir -p /export/servers/redis-3.2.8/redisdata//修改vim redis.conf//修改内容bind node-1daemonize yespidfile /var/run/redis_6379.pidlogfile "/export/servers/redis-3.2.8/logs/redis.log"dir /export/servers/redis-3.2.8/redisdata7.执行启动src/redis-server redis.conf8.连接srcredis-cli -h node-1
2.java示例代码
package jedisDemo.cn.test;import java.util.List;import java.util.Map;import java.util.Set;import org.junit.After;import org.junit.Before;import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class JedisDemo1 { private JedisPool jedisPool; private JedisPoolConfig config; @Before public void redisConnectionPool() { System.out.println("lianjie"); config = new JedisPoolConfig(); config.setMaxIdle(10); config.setMaxWaitMillis(3000); config.setMaxTotal(50); config.setMinIdle(5); jedisPool = new JedisPool(config, "node-1", 6379); } @After public void closePool() { jedisPool.close(); } // string @Test public void addStr() { Jedis jedis = jedisPool.getResource(); // 添加 jedis.set("key2", "helloworld"); // 查询 String value = jedis.get("key2"); System.out.println(value); // 删除 jedis.del("key2"); // 整数型增长 jedis.set("inkey", "1"); jedis.incr("inkey"); System.out.println(jedis.get("inkey")); jedis.incrBy("inkey", 3); System.out.println(jedis.get("inkey")); } // hash @Test public void addHash() { Jedis jedis = jedisPool.getResource(); // 添加 jedis.hset("hashkey1", "field1", "jedisval1"); jedis.hset("hashkey1", "field2", "jedisval2"); // 获取 MaphgetAll = jedis.hgetAll("hashkey1"); for (String field : hgetAll.keySet()) { System.out.println("field=" + field); System.out.println("val=" + hgetAll.get(field)); } // 修改 jedis.hset("hashkey1", "field2", "jedisval321"); Map hgetAll2 = jedis.hgetAll("hashkey1"); for (String field : hgetAll2.keySet()) { System.out.println("field2=" + field); System.out.println("val2=" + hgetAll2.get(field)); } // 删除 jedis.del("hashkey1"); Map hgetAll3 = jedis.hgetAll("hashkey1"); for (String field : hgetAll3.keySet()) { System.out.println("field3=" + field); System.out.println("val3=" + hgetAll3.get(field)); } } // list @Test public void addList() { Jedis jedis = jedisPool.getResource(); // 从左插入 jedis.lpush("listKey1", "jedis1", "jedis2", "jedis3", "jedis2"); // 获取 List listkey = jedis.lrange("listKey1", 0, -1); for (String s : listkey) { System.out.println(s); } // 从左边弹出 String listkey2 = jedis.lpop("listKey1"); System.out.println("lpop=" + listkey2); } @Test public void addSet() { Jedis jedis = jedisPool.getResource(); jedis.sadd("setKey1", "jedis1", "jedis2", "jedis3", "jedis2"); Set set = jedis.smembers("setKey1"); for (String s : set) { System.out.println("set=" + s); } // 移除掉一个数据 jedis.srem("setKey1", "jedis3"); Set set2 = jedis.smembers("setKey1"); for (String s : set2) { System.out.println("set2=" + s); } }}
3.主从复制
安装和前面一样修改配置vim redis.conf,将node-1改成node-2,node-3以及添加slaveof node-1 6379bind node-2daemonize yespidfile /var/run/redis_6379.pidlogfile "/export/servers/redis-3.2.8/logs/redis.log"dir /export/servers/redis-3.2.8/redisdataslaveof node-1 6379
Sentinel(哨兵)
1.修改哨兵配置文件vim sentinel.conf#修改bind配置,每台机器修改为自己对应的主机名bind node-1 #配置sentinel服务后台运行daemonize yes#修改三台机器监控的主节点,现在主节点是node服务器sentinel monitor mymaster node-1 6379 2#修改bind配置,每台机器修改为自己对应的主机名bind node-2 #配置sentinel服务后台运行daemonize yes#修改三台机器监控的主节点,现在主节点是node01服务器sentinel monitor mymaster node-1 6379 2#修改bind配置,每台机器修改为自己对应的主机名bind node-3 #配置sentinel服务后台运行daemonize yes#修改三台机器监控的主节点,现在主节点是node01服务器sentinel monitor mymaster node-1 6379 2启动src/redis-sentinel sentinel.conf
哨兵模式java代码
package jedisDemo.cn.test;import java.util.Arrays;import java.util.HashSet;import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.JedisSentinelPool;public class SentinelDemo1 { @Test public void testSentinel() { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(10); config.setMaxWaitMillis(3000); config.setMaxTotal(30); config.setMinIdle(5); //哨兵信息 HashSetsentinels = new HashSet (Arrays.asList("node-1:26379","node-2:26379","node-3:26379")); //创建连接池 JedisSentinelPool jsPool=new JedisSentinelPool("mymaster", sentinels,config); //获取jedis Jedis jedis = jsPool.getResource(); jedis.set("sentinelKey", "sentinelValue"); jedis.close(); }}
4.集群
三主三从,需要六台虚拟机,不过资源有限,用一台模拟1.解压tar -zxf redis-3.2.8.tar.gz -C /export/2.安装环境和编译yum -y install gcc-c++ tclcd /export/redis-3.2.8make && make install3.创建redis不同实例的配置文件夹cd /export/redis-3.2.8mkdir -p /export/redis-3.2.8/clusters/7001mkdir -p /export/redis-3.2.8/clusters/7002mkdir -p /export/redis-3.2.8/clusters/7003mkdir -p /export/redis-3.2.8/clusters/7004mkdir -p /export/redis-3.2.8/clusters/7005mkdir -p /export/redis-3.2.8/clusters/70064.修改配置文件mkdir -p /export/redis-3.2.8/logsmkdir -p /export/redis-3.2.8/redisdata/7001mkdir -p /export/redis-3.2.8/redisdata/7002mkdir -p /export/redis-3.2.8/redisdata/7003mkdir -p /export/redis-3.2.8/redisdata/7004mkdir -p /export/redis-3.2.8/redisdata/7005mkdir -p /export/redis-3.2.8/redisdata/7006第一个文件vim /export/redis-3.2.8/redis.confbind node-1port 7001cluster-enabled yescluster-config-file nodes-7001.confcluster-node-timeout 5000appendonly yesdaemonize yespidfile /var/run/redis_7001.pidlogfile "/export/redis-3.2.8/logs/7001.log"dir /export/redis-3.2.8/redisdata/7001第二个到第六个,将第一个复制到7002-7006中,将7001改成7002-7006,这里推荐可以使用notepad工具进行修改cp /export/redis-3.2.8/redis.conf /export/redis-3.2.8/clusters/7002vim /export/redis-3.2.8/clusters/7002/redis.conf5.启动cd /export/redis-3.2.8src/redis-server clusters/7001/redis.confsrc/redis-server clusters/7002/redis.confsrc/redis-server clusters/7003/redis.confsrc/redis-server clusters/7004/redis.confsrc/redis-server clusters/7005/redis.confsrc/redis-server clusters/7006/redis.conf6.安装ruby运行环境yum install rubyyum install rubygemsgem install redis在执行gem install redis可能报ruby版本低问题,进行升级cd /export/redis-3.2.8gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDBcurl -sSL https://get.rvm.io | bash -s stable执行这条命令时,可能会报curl: (7) couldn't connect to host需要sudo vim /etc/hosts#绑定host199.232.28.133 raw.githubusercontent.comsource /etc/profile.d/rvm.sh rvm list known//查看可用版本rvm install 2.4.1 //安装想要的版本7.创建集群cd /export/redis-3.2.8gem install redissrc/redis-trib.rb create --replicas 1 node-1:7001 node-1:7002 node-1:7003 node-1:7004 node-1:7005 node-1:7006如果出错,将 node-1换成p地址之后再执行,如果报already busy的话,src/redis-cli -h node01 -c -p 7001输入cluster reset flushall7001-70066依次执行8.连接cd /export/redis-3.2.8src/redis-cli -h node-1 -c -p 7001
java操作
package jedisDemo.cn.test;import java.io.IOException;import java.util.Arrays;import java.util.HashSet;import java.util.Set;import org.junit.Test;import redis.clients.jedis.HostAndPort;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisCluster;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.JedisSentinelPool;public class SentinelDemo1 { @Test public void testSentinel() { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(10); config.setMaxWaitMillis(3000); config.setMaxTotal(30); config.setMinIdle(5); //哨兵信息 HashSetsentinels = new HashSet (Arrays.asList("node-1:26379","node-2:26379","node-3:26379")); //创建连接池 JedisSentinelPool jsPool=new JedisSentinelPool("mymaster", sentinels,config); //获取jedis Jedis jedis = jsPool.getResource(); jedis.set("sentinelKey", "sentinelValue"); jedis.close(); } @Test public void jedisClusterTest() throws IOException { Set portSet = new HashSet (); portSet.add(new HostAndPort("node-1",7001)); portSet.add(new HostAndPort("node-1",7002)); portSet.add(new HostAndPort("node-1",7003)); portSet.add(new HostAndPort("node-1",7004)); portSet.add(new HostAndPort("node-1",7005)); portSet.add(new HostAndPort("node-1",7006)); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(10); jedisPoolConfig.setMaxWaitMillis(3000); jedisPoolConfig.setMaxTotal(30); jedisPoolConfig.setMinIdle(5); JedisCluster jedisCluster = new JedisCluster(portSet, jedisPoolConfig); jedisCluster.set("clusterTest","clustervalue");//这个值不一定在7001中,可能在7002或7003中 String string = jedisCluster.get("clusterTest"); System.out.println(string); jedisCluster.close(); }}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月27日 03时29分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
redis
2019-03-04
设计模式之一简单工厂模式
2019-03-04
c# GDI绘制简单的艺术字
2019-03-04
SAS-阶乘-do end
2019-03-04
想牵着你的手迎着春风奔跑
2019-03-04
html中图片上传预览功能
2019-03-04
简单背景图片,鼠标移动特效
2021-05-07
js,小程序共用java后端进行数据传输
2021-05-07
[python面向对象学习笔记十] eval函数
2021-05-07
ReID基础 | ReID工程中的一些小trick
2021-05-07
haystack安装后导致Django版本强制升级为3.2引发的不兼容性问题
2021-05-07
LINQ之Single,SingleOrDefault
2021-05-07
LINQ之ElementAt,ElementAtOrDefault
2021-05-07
OpenCV6边缘检测[Canny算法]
2021-05-07
Hadoop_Scala操作Hbase
2021-05-07
Scala_1.控制台打印,变量定义,函数定义
2021-05-07
Linux Vim操作-添加行号
2021-05-07
十五.Python异常处理
2019-03-04
c++备考期末必须看的知识点(一篇就够了)
2019-03-04
qt中初始化界面的几种方法
2019-03-04