• Redis 安装,配置以及数据操作


    Nosql介绍

    Nosql:一类新出现的数据库(not only sql)的特点

    不支持SQL语法
    存储结构跟传统关系型数据库中那种关系表完全不同,nosql中存储的数据都是k-v形式
    Nosql的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景
    Nosql中的产品种类相当多:
        Mongodb
        Redis
        Hbase hadoop
        Cassandra hadoop
    

    Nosql与SQL数据库的比较

    适用场景不同:sql数据库适合用于关系特别复杂的数据库查询场景,nosql反之
    “事务”特性的支持:sql对事务的支持非常完善,而nosql基本不支持事务
    两者在不断的取长补短,呈现融合趋势

    Redis介绍

    Redis官方参考文档获取详细的Redis操作  http://doc.redisfans.com/

    redis是一个key-value存储系统。和Memcached类似,它支持存储的values类型相对更多,包括字符串、列表、哈希散列表、集合,有序集合。

    这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,也即是说redis支持数据备份

    本质:将数据保存在内存中

    用途:redis可以做缓存;redis可以做消息队列

    特性:

    • 可以做持久化:在配置文件设置,如果你要保存到文件,可添加设置,就算电脑不小心关机了,数据还是在的。这个要不要保存都是自己来定的。
    • 支持存放数据的格式多(5种格式)
    {
        'k1':'hiayna',  #第一种字符串格式
        'k2':[11,22,33,44], #第二种列表格式
        'k3':{11,22,33,44}, #第三种集合格式
        'k4':{                 #第四种,字典,也可以叫做哈希散列表,
                'n1':'xxx',
                'n2':'fff'
            },
        'k5':{(11,1),('xxx':5)} #有序集合
    }

    相关问题

    为什么要使用redis?使用redis有哪些好处?

    性能极高    Redis能读的速度是110000次/s,写的速度是81000次/s
    丰富的数据类型    Redis支持二进制案例的Strings,Lists,Hashes,Sets及Ordered Sets数据类型操作
    原子     Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子执行(原子性是指没有线程,进程那种相互竞争的概念)
    丰富的特性   Redis还支持publish/subscribe,通知,key过期等等特性

    redis相比memcached有哪些优势?

    memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
    redis的速度比memcached快很多
    redis可以持久化其数据

    redis的应用场景

    用来做缓存(ehcache/memcached)——redis的所有数据都是放在内存中的(内存数据库)
    可以在某些特定应用场景下替代传统数据库——比如社交类的应用
    在一些大型系统中,巧妙地实现一些特定的功能:session共享,购物车
    只要你有丰富的想象力,redis可以帮你实现很多非常棒的功能

    redis的安装

    当前redis最新版本是4.0,它是一个测试版本,稳定版本是3.2版本

    方式一:硬盘免安装

    wget http://download.redis.io/releases/redis-3.2.8.tar.gz  #下载
    tar xzf redis-3.2.8.tar.gz  #解压
    sudo mv ./redis-3.2.8 /usr/local/redis 复制放到usr/local目录下 cd /us
    cd usr/local/redis #切换到redis目录下 sudo make #生成 因为是c语言写的所有需要编译
    sudo make test 测试,这段运行时间较长
    sudo make install 安装,将redis的命令安装到/usr/local/目录
    sudo /uer/local/bin/ 安装完成后进入目录/usr/local/bin中查看
    ls -a
    cd /usr/local/redis/
    ls
    sudo cp redis.conf /etc/redis/redis.conf 将配置文件移动到etc目录下

    sudo vi /etc/redis/redis.conf 进行配置
    #绑定ip:如果需要远程访问,可将此行注释,或绑定一个真实的ip
    bind 127.0.0.1
    #端口,默认是6379
    port 6379
    #是否以守护进程运行
      如果以守护进程运行,则不会在命令行阻塞,类似于服务
      如果以非守护进程运行,则当前终端被诸塞
      设置yes表示守护进程,设置为no表示非守护进程
      推荐设置成 yes
    daemonize yes
    #数据文件
    dbfilename dump.rdb
    #数据文件存储路径
    dir /var/lib/redis 一开始是默认的./ 自定义的话需要先创建这个路径
    #日志文件
    logfile /var/log/redis/redis-server.log 一开始默认是没有的,需要手动建立一个目录放日志文件
    #数据库,默认有16个
    database 16
    #主从复制
    slaveof

    简单介绍一下文件

    redis-server        redis服务器
    redis-cli            redis命令行客户端
    redis-benchmake           redis性能测试工具
    redis-check-aof        AOF修复工具
    reids-check-rdb       RDB文件检索工具(redis持久化就是用的rdb文件)

    启动服务端与客户端

    redis-server --help   获取启动的帮助命令
    推荐使用服务的方式管理redis服务
    
    启动
    sudo service redis start
    停止
    sudo service redis stop
    重启
    sudo service redis restart
    
    如果是按之前配置,自定义过后就不能用上面的方式了
    sudo  redis-service  /etc/redis/redis.conf   指定加载的配置文件
    
    ps aux | grep redis   查看redis服务器进程
    sudo kill -9 pid   杀死redis服务器
    
    
    客户端
    redis-cil --help  获取客户端帮助命令
    redis-cli   可以直接启动,ip和端口都是默认的
    
    ping   运行测试命令
    
    切换数据库
    默认是0号数据库
    select index

    数据操作

    redis是key-value的数据结构,每条数据都是一个键值对

    键的类型是字符串

    注意:不能重复

    值的类型分为五种  字符串string   哈希hash  列表list    集合set  有序集合zset

    数据操作行为

    保存   修改  获取   删除

    点击中文官方文档查看命令文档  http://redis.cn/commends.html

    strings类型

    字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述性息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M

    保存

    如果设置的键不存在则为添加,如果设置的键已经存在则修改
    设置键值
    set key  value
    查看是否有值
    key *    (空的返回empty list or set)
    查看键值
    get key
    修改键值就是重新设置
    
    设置键值及过期时间,以秒为单位
    setex key seconds value
    设置多个键值
    mset key1 value1 key2 value2 .
    追加值(就是在值的尾部拼接上)
    append key value

    获取

    获取 根据键获取值,如果不存在此键则返回nil
    get  key
    
    根据键获取多个值
    mget key1 key2 ...

    删除

    键命令(支持所有数据类型)

    查找键,参数支持正则表达式
    keys pattern    例如key *       key   'a*'
    判断键是否存在,如果存在返回1,不存在返回0
    exists  key1
    查看键对应的value的类型
    type key
    
    删除键以及对应的值
    del key1 key2
    
    设置过期时间,以秒为单位
    如果没有指定过期时间则一直存在,直到使用DEL移除
    expire key seconds
    
    查看有效时间,以秒为单位
    ttl  key

    hash

    hash用于存储对象,对象的结构为属性,值

    值的类型为strings

    增加,修改

    设置单个属性
    hset key  filed  value
    
    可能会报错   一串英文
    
    Redis被配置为保存数据库快照,但它目前不能持久化到硬盘。用来修改集合数据的命令不能用
    原因:
        强制关闭Redis快照导致不能持久化。解决方案:
        运行config set stop-writes-on-bgsave-error no  命令后,关闭配置项stop-writes-on-bgsave-error解决该问题
    
    
    设置多个属性
    hmset key field1 value1 field2 value2

    获取

    获取指定键所有的属性
    hkeys key
    
    获取一个属性的值
    hget key field
    
    获取多个属性的值
    hmget key field1 field2...
    
    获取所有属性的值
    hvals key 

    删除

    删除整个hash键及值,使用del命令
    删除属性,属性对应的值会被一起删除
    hdel key field1 field2 

    list

    列表的元素类型为string

    按照插入顺序排序

    增加

    在左侧插入数据
    lpush key value1 value2
    
    查看插入的数据
    lrange key index(start) index(end)
    
    在右侧插入数据
    rpush key value1 value2
    
    
    在指定元素的前后插入新元素
    linsert key before或after   现有元素   新元素 

    获取

    返回列表里指定范围内的元素
        start,stop为元素的下表索引
        索引从左侧开始,第一个元素为0
        索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素
    lrange key start  stop 

    设置指定索引位置的元素值

    索引从左侧开始,第一个元素为0

    索引可以是负数,表示尾部开始计数,如-1表示最后一个元素

    lset key index value

    删除

    删除指定元素
        将列表中前count次出现的值value的元素移除
        count > 0: 从头往尾移除
        count <0: 从尾往头移除
        count = 0: 移除所有
    lrem key count value

    set类型

    无序集合
    元素为string类型
    元素具有唯一性,不重复
    说明:对于集合没有修改操作

    增加

    添加元素
    sadd key member1 member2 

    获取

    返回所有元素
    smembers key 

    删除

    删除指定元素
    srem key

    zset类型

    sorted set ,有序集合
    元素为string类型
    元素具有唯一性,不重复
    每个元素都会关联一个 double类型的score,表示权重,通过权重将元素从小到大排序
    说明:没有修改操作

    增加

    添加
    zadd key score1 member1 score2 member2  

    获取

    返回指定范围的元素
    start,stop为元素的下标索引
    索引从左侧开始,第一个元素为0
    索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素
    
    zrange key start stop
    
    
    返回score值在min和max之间的成员    (包括min和max本身)
    zrangebyscore key min max
    
    
    返回成员member的score值
    zscore key member 

    删除

    删除指定元素
    zrem key member1 member
    
    
    删除权重在指定范围的元素
    zremrangebyscore key min max
    

      

  • 相关阅读:
    Spring知识整理
    业务开发(四)—— 服务器
    TCP/IP协议知识整理
    XSS
    Java并发编程(一) —— 线程
    业务开发(三)—— 前端
    Effective Java——(一)创建和销毁对象
    Java编程思想——异常
    Git使用
    网络基础(一)
  • 原文地址:https://www.cnblogs.com/596014054-yangdongsheng/p/10228384.html
Copyright © 2020-2023  润新知