简单说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"); // 获取 Map
hgetAll = 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);		//哨兵信息		HashSet
sentinels = 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);		//哨兵信息		HashSet
sentinels = 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(); }}
上一篇:简单认识hbase(上)
下一篇:linux使用yum安装软件报错

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月27日 03时29分44秒