redis安装启动到使用,主从、哨兵、集群使用

redis安装
    官网下载tar,放到/usr/local里并解压到这里目录
    进入这个目录, make 安装
    make安装完毕,进入src目录 make install。 完毕即可开启服务
    

redis 启动:
    开启redis安装文件目录 src 里的  /redis-server  /redis安装目录里的redis.conf    ===》 就是是开始服务端并指定一个配置文件   (我的服务脚本与配置文件分别在 /usr/local/redis/bin 与
/usr/local/redis/etc下)
    开启服务端完毕后, 再启动bin里面的redis-cli 启动客户端。包括我们的操作都是在客户端进行。(客户端不用指定配置文件)。

查看redis服务是否开启
    netstat -tunpl | grep redis


查看redis 端口
    ps -f | grep 6379
    cp 文件路径 到某个路径


退出redis服务:
    1.直接杀进程  2.


redis参数设置:
    redis.conf 里参数:    daemonize no 改为yes 设置为后台启动
                port 设置端口号
                file 设置日志文件

redis 持久化机制:
        rdb 与 aof :
        rdb: 快照 。每隔一个时间点 就将rdb的数据写到硬盘里 是默认的 默认文件名dump.rdb。数据集比较大时,它快照读到硬盘是会停止下来处理客户端  可能会造成数据丢失


        aof:  redis将每次写的操作都记录到 appendonly.aof文件中。每次redis重启就会执行这个文件中的写操作来重置数据库中的内容。 可以通过配置文件设置fsync策略
            在Redis的配置文件中存在三种同步方式,它们分别是:
            appendfsync always #每次有数据修改发生时都会写入AOF文件。
            appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
            appendfsync no #从不同步。高效但是数据不会被持久化。


redis 数据类型: String/Hash/List/Set和ZSet:
            string 语法:
                set key 值   get key --》   多次设置一个key会覆盖
                setnx key 值  --》 会先判断有没有 没有即设置返回1 有就不设置返回0
                setex key 值 时间  --》 设置值什么时候过期


            Hash 语法:
                类似hashMap, k-v的形式。
                hset/hget,hmset/hmget,     hexists/判断是否有这个k,
                hvals/hgetall/hlen/hdel => 查值个数/查所有键值对/查所有值/删除指定的
                
            List 类型:
                对头尾部进行添加删除数据。 类似队列
                hpush/rpush  => 栈/堆  =>  头插/尾查
            Set/ZSet类型:
                类似java里的List 支持取交集并集取差
                sadd/srem/sdiff/sdiffstore/ => 增加/删除/返回两集合不同的元素/将两集合不同的元素存到另外一个集合

 redis 高级命令:
    exprie:判断key 在不在
    设置key的时间/查看key的剩余时间//
    select: 选择数据库,默认一个数据库逻辑上的分成16个数据库,默认第0个
    move[key][数据库下标]:将key 移到其他数据库。
    rename :重命名key
    


redis 安全性:
    可以设置操作的密码
    设置bind 参数为127.0.0.1  为仅本机可操作和从服务器链接

#########################################################
redis 主从复制:  
    过程:
        从连接主,然后发送sync同步命令,在同步时可以继续处理client请求。
        一般主负责写,从负责读。
    配置: 从服务器 的 配置文件 里配置salveof 【slaveof  192.168.0.11 6379 】 =>  主服务器的IP和端口  
         如果主服务器访问要密码  就 再加上密码。
        这里要注意 主服务器要允许从服务器的IP访问,如果还报错,去查看日志文件判断是不是别的原因
    
    有了主从复制后,相对主服务器进行监控,redis 2.8后有了稳定的哨兵机制,当主服务器挂了,将从服务器更为主服务器,自动切换    
    哨兵配置:..   


redis 事物:
    这个东西但是没多大用处,发生意外数据不回滚。


redis 使用java api:
     Jedis jedis = new Jedis("IP", 端口号);
    jedis.hset()/jedis.hget()/jedis.sadd() => 方法名与实际在linux操作的命令一样  
    注意要开放端口、jedis.close()。 否则报错ctionException: java.net.SocketTime  也可以在new Jedis 时设置连接时长


    *redis 使用api 设计方面 :
        因为redis 是非关系型数据库,所以是不能像mysql之类的关系型数据库做关系查询(select userName from users where sex=w)            那么redis 如何做条件查询? 设计 使用 redis的多种集合配合使用
        例如 (思路):要查某个user的年龄在25并且性别是男的。 => 将整个user对象存到一个map<id,user>,用一个user_age_25的set集合,放年龄25的id,用一个user_sex_man=的set集合放性别为男的id。 那要查的时候就拿到年龄25的所有key,在存完整用户的map 里调用hget( key)用户的完整信息。 

         redis 写入的性能非常好,但是在条件查询方面它仍是个nosql。


redis 订阅与传播:
    某台机器订阅主机器后,能接收到主机器发送的信息。
        
    


##########################################    
redis集群搭建:
     集群:数据分槽。 一个集群放一部分数据,每个从节点放一点从节点的数据
    集群搭建: 至少要三个master,  至少六台服务器。
    1)服务器都安装redis
        改redis.conf文件:
            daemonize:yes  #后台启动
            *bind 本地当前机器的IP
            *dir /usr/local/redis/7001/   #指定数据文件存放的位置,否则数据会丢失
            *cluster-enabled yes   #开启集群模式
            *cluster-config-file  nodes7001.conf   #这里700*最好和端口号对上,这个配置是告诉别的集群这个节点的存在。可以把整个集群当做一个整体,这个整体里的每个节点都知道别的所有的节点的存在。nodes 文件要不相同
            cluster-node-timeout 5000
            appendonly yes   #aof模式
    2)下载yum ruby、 yum rubygems、 gem install redis、

    3) 启动6个redis 实例,判断是否都能启动成功
        /redis-server   /redis.conf 对应的配置文件
        ps -ef |gref redis

    4) 到redis的安装目录底下去找到sec/redis-trib.rb   #这是redis集群操作脚本 命令如下:
./redis-trib.rb create --replicas 1 192.168.1.128:7001 192.168.1.129:7002  192.168.1.130:7003 192.168.1.131:7004 192.168.1.132:7005 192.168.1.133:7006
    这个命令就是启动集群操作  1 是表示 主服务器和从服务器的比例,按这个命令的服务器的添加顺序,如果比例是1,前四个就是主,后四个就是从,
    输入命令后会提示一些集群的配置信息。 在配置信息里可以看到集群分了多少槽、从节点关系集群的id等。  确定就输入yes。 集群就搭建完毕。

    5) 集群启动
        可连任意一个客户端 命令 :
            ./redies-cli -c -h 192.168.1.171 -p 7001
        进入客户端后  cluster nodes   可查看集群信息   
    6)集群使用
        ../存值拿值


    6)集群退出
         集群命令必须逐个退出 ./redies-cli -c -h 192.168.1.171 -p 7001 shutdown         
    //无法启动时 删除临时数据文件 再一个个重启

redis java 集群 操作
    

 @Test public void test2(){ //当前所有的node节点 Set<HostAndPort> jedis = new HashSet(); jedis.add(new HostAndPort("192.168.123.168",7001)); jedis.add(new HostAndPort("192.168.123.168",7003)); jedis.add(new HostAndPort("192.168.123.168",7002)); jedis.add(new HostAndPort("192.168.123.168",7004)); // GenericObjectPoolConfig goConfig = new GenericObjectPoolConfig(); // JedisClusters jedisPoolConfig = new JedisCluster(jedis,6000,100,goConfig); // 和下面的一样 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(100); jedisPoolConfig.setMaxTotal(20); jedisPoolConfig.setMaxWaitMillis(-1); JedisCluster jc = new JedisCluster(jedis,6000,100,jedisPoolConfig); //设置好了就可以操作了 jc.set("name","pengyan"); jc.sadd("user"); jc.get("name"); jc.get("user"); try { jc.close(); } catch (IOException e) { e.printStackTrace(); } //防火墙要关... //同样也可以用配置文件..xml 整个spring.. }

 redis spring 整合 :

             使用配置文件即可。

参考 https://www.cnblogs.com/northern-light/p/8540309.html

=====================================================================
info命令 可以查看当前redis 状态
scp -r 文件名/  192.168.134.129:/目录   复制到另外一台服务器
tar -xvf 文件名 -C /某个路径

猜你喜欢

转载自blog.csdn.net/weixin_41144975/article/details/88218803