Redis

Posted 随性岁分享

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis相关的知识,希望对你有一定的参考价值。

 

    
        Redis
            泛指非关系型的数据库
            不支持SQL语句
            存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是key-value的形式
            NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景
            NoSQL中的产品种类相当多:
                Mongodb
                Redis
                Hbase hadoop    (大数据使用的数据库)
                Cassandra hadoop    (大数据使用的数据库)
            
            NoSQL和SQL的比较    
                适用场景不同:sql数据库适合用于关系特别复杂的数据查询场景,nosql反之
                "事务"特性的支持:sql对事务的支持非常完善,而nosql基本不支持事务
                两者在不断地取长补短,呈现融合趋势
            
            Redis简介
                Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、
                Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作
                由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis是NoSQL技术
                阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些
                高层级的接口使用其可以胜任,如缓存、队列系统的不同角色
            
            Redis的特性    
                是内存型数据库
                key-value的存储形式,key的类型是字符串
                值的类型一般分为5种数据类型
                    string
                    hash
                    list
                    set()  #普通集合
                    zeset()  #有序集合
                    
            Redis的优势
            Redis的应用场景
                缓存
            Redis的配置 *****
                bind
                port
                slaveof #奴隶
                dir
                dbfilename
            键命令(所有的数据类型通用)
                keys *
                del key1 key2
                expire key 10    
            操作数据
                string
                    set name zhangsan
                    get name
                        "zhangsan"
                    setex name 10 lisi  #单位为秒,意味10s之内可以访问到
                    mset name1 zhangsan name2 lisi name3 wangwu 
                    mget name1 name2 name3     
                        "zhangsan"
                        "lisi"
                        "wangwu"
                    append  name1 itcast
                    get name1 
                        "zhangsanitcast"
                    
                    del name2
                    keys *  #获取所有的key
                    
                hash
                    hset xiaoming  height 175
                    hset xiaoming  weight 65kg
                    hget xiaoming  height/weight
                        175/60kg
                    hmset xiaoming name itcast age 11
                    hkeys xiaoming  
                        // 得到他下面的键
                    hvals xiaoming 
                        // 得到他下面键所对应的值
                        
                    hdel xiaoming height
                                
                list
                    lpush a1 a b c d  #这个l代表左边
                    lrange a1 0 -1  # 这个l代表list   0-2 这个值可以是0-10将所有的数据都取出来.
                                        没有的自动过滤掉,不会报错
                        "d"
                        "c"
                        "b"
                        "a"
                    rpush a2 1 2 3 4 5 6
                    lrange a2 0 -1
                        "1"
                        "2"
                        "3"
                        "4"
                    linsert a2 before(after) 3 66    
                    lset a2 2 bbb
                    lset a2 5 bbb
                    lrem a2 1 bbb   #只移除一次
                            
                set   #不允许修改
                    sadd a3 java python php 
                    smembers a3 
                        "java" 
                        "python" 
                        "php"
                        "C#"
                    srem a3 java 
                    smembers a3  
                        "python" 
                        "php"
                        "C#"
                        
                zeset    #不允许修改
                    zadd a4 4 lisi 7 xiaomei  3 wangwu  6 lili  8 xiaohua
                    zrange a4 0 -1
                        "wangwu" 
                        "lisi"    
                        "lili"
                        "xiaomei"
                        "xiaohua"
                    zrangebyscore a4 6 8    
                        "lili"
                        "xiaomei" 
                        "xiaohua"
                    
                    zscore a4 lili
                        "6"
                    zrem a4 xiaomei    
                    zrange a4 0 -1
                        "wangwu" 
                        "lisi"    
                        "lili"
                        "xiaohua"
                    zremrangebyscore a4 6 8 
                    zrange a4 0 -1
                        "wangwu"
                        "lisi"
                        
            redis主从配置
                优点
                    读写分离
                    数据备份
            
            redis的集群:
            集群的好处:
                负载均衡
            如何配置:
                1、创建了6个配置文件,port一定不同,启动6个redis的服务
                    port 7003
                    bind 172.16.179.131
                    daemonize yes
                    pidfile 7003.pid
                    cluster-enabled yes
                    cluster-config-file 7003_node.conf
                    cluster-node-timeout 15000
                    appendonly yes
                2、将6个配置文件,使用redis-server 进行启动
                3、将6个独立的redis-server服务给他变为一个群体
                    redis-trib.rb create --replicas 1   172.16.179.130:7000   172.16.179.130:7001   172.16.179.130:7002 
                                   172.16.179.131:7003 172.16.179.131:7004 172.16.179.131:7005     4、问题     redis-trib.rb 默认是没有这个命令     sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/     redis-trib.rb 内部是使用ruby语言来实现,所以就需要ubuntu系统能够支持ruby的环境     sudo apt-get install ruby     安装完ruby之后,看看ruby的版本 ruby -v      如果是2.2以下的话,修改ubuntu下的source.list     gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/sudo gem install redis      使用python代码对集群进行操作

 


以上是关于Redis的主要内容,如果未能解决你的问题,请参考以下文章

redis存储session配制方法

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

Redis缓存:java语言注释符号,附超全教程文档

spring boot 整合 redis

Redis 学习 —— 数据类型及操作