linux Redis集群搭建,哨兵配置,Redis事务,Redis瑞士军刀,pipeline,发布订阅, GEO

linux Redis集群搭建,

修改ip

vim /etc/sysconf ig/network -scr ipts/ ifcfg-ens33

在这里插入图片描述
关闭防火墙才可链接
查看防火墙是否启动

firewall-cmd --state

关闭或永久关闭

 systemctl stop/disable firewalld.service

父配置bind 设置ip
子都是各自的ip
在/etc/redis/6379.conf中修改

vim /etc/redis/6379.conf

子修改是否受保护

protected no
slave of 父ip 6379端口号

进入redis指令
/usr/local/redis-3.2.8/src/
./redis-cli -h (本机ip)
启动redis

cd etc/init.d
./redis_6379 start/stop

设置所有人可以访问

chmod 777 redis_6379

查看身份在设置中

./redis-cli -h 192.168.66.51
info replication

哨兵配置

  1. 父/usr/local/redis-3.2.8中配置 sentinel.conf 受保护 no
    dir /var/ sentinal/26379工作目录
    sentinel monitor mymaster 127 .0.0.1父的ip 6379 2
    sentinel down -after- milliseconds mymaster 30000
  2. 子bind 配置自己的ip
    受保护改成no
    dir /var/ sentinal/ 26379
  3. 修改配置文件路径和redis配置文件放到一起
    /etc 下 创建目录sentinal
    cd usr/local/redis-3.2.8
    把配置文件拷贝到/etc/sentinal
    cp sentinel.conf /etc/sentinal
    cd /etc/sentinal 把配置文件修改名字
    mv sentinel.conf 26379.conf
  4. cd /usr/local/redis3.2.8/src进入启动哨兵
    mkdir -p /var/sentinel/26379强制创建目录(哨兵启动时指定的文件)
    ./redis-sentinel /etc/sentinal/26379.conf启动哨兵 指定一个配置
cd /usr/local/redis-3.2.8
vim sentinel.conf
受保护 no
dir /var/ sentinal/ 26379
sentinel monitor mymaster 127.0.0.1父的ip 6379 2
sentinel down -after- milliseconds mymaster 30000
子redis
cd /usr/local/redis-3.2.8
vim sentinel.conf
子bind 配置自己的ip
受保护改成no
dir /var/ sentinal/ 26379

cd /etc
mkdir sentinal 
cd usr/local/redis-3.2.8
cp sentinel.conf /etc/sentinal 
cd /etc/sentinal  mv sentinel.conf 26379.conf 
cd /usr/local/redis3.2.8/src 
mkdir -p /var/sentinel/26379
./redis-sentinel /etc/sentinal/26379.conf

在这里插入图片描述

Redis事务

首先。关系型数据库得事物都是有原子性。而redis得 事物是非原子性
事物:
MULTI开启事物.
EXEC执行事物中得所有得操作命令
DISCARD取消事物放弃执行事物快中得所有得命令
watch监听一 -个或者 多个key
unwatch取消监听
事物失败处理

  1. 语法错误编辑器错误 在开启事物修改k1为11 k2为22 但是k2语法错误 导致事物提交失败
    i2 .类型错误
    运行时错误在开始事物 修改k1 得值为11 k2 值为22
    但是我们将k2得类型作为list 进行修改检测类型错误。导致
    事务失败了。此时 我们得这个事物是不是没有回滚而是跳过 了命令进行执行结果k1改变了k2 保留 原值
    |总结
    为什么reids不支持事物回滚?
    2个列子多数事物失败是由语法错误或者数据结构错误导致。语法错误在进行命令入队前就检测得。而类型错误时在执行时监测。

Redis瑞士军刀

1.慢查询
2. pipeline

<dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.1.0</version>
    </dependency>
 		Map<String, String> data = new HashMap<>();
        jedis.select(8);
        jedis.flushDB();//清空第8库数据
		//获得到流水线
        PipeLine pip = jedis.pipeLined();
        Long start = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++) {
            data.clear();
            data.put("k_ " + i, "v_" + i);
            pip.hmset("key_" + i, data);//循环执行10000条数据插入redis
        }
        pip.sync();//将封装后得pipe一次性发送给redis
        Long send = System.currentTimeMillis();
        System.out.println("共插入:[" + jedis.dbSize() + "]条。。。");
        System.out.println("使用pipeline批量设置耗时:" + (senp - start) / 1000 + "秒");

4.发布订阅
订阅者Subscribe
发布者publish

监听

 @Test
    public void fa() {
        Jedis jedis = JedisUtils.getJedis();
        jedis.subscribe(new sub(), "cctt");
    }

重写 方法输出监听到的内容

public class sub extends JedisPubSub {
@override
    public void onMessage(String channel, string message) {
        System.out.println(message);|
    }

发布者

  public static void main(String[] args) {
        //配置redis ip
        JedisPool jedisPool = new JedisPool("192. 168.6.77", 6379);
        Jedis jedis = jedisPool.getResource();
        Scanner scanner = new Scanner(System.in);
        while (true) {
            String next = scanner.next();
            jedis.publish("cctt", next);
        }
  1. GEO
    Geo地址位置功能redis 3. 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值