前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Redis

作者头像
py3study
发布2020-02-10 22:55:36
5580
发布2020-02-10 22:55:36
举报
文章被收录于专栏:python3
代码语言:javascript
复制
        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    

            操作数据
          选择x号仓库
            select x
                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"
               "5"
               "6"

                    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#"
                        
                zset    # 不允许修改
                    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的访问量
            
            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代码对集群进行操作
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档