zoukankan      html  css  js  c++  java
  • Redis

    Redis

    一种可基于内存亦可持久化的 Key-Value 数据库,NoSql 一种非关系型数据库,在

    NoSQL 数据库中数据之间是无联系的,无关系的。数据的结构是松散的,可变的.
     redis 的主业目前是基于键值对的数据存储、缓存等,消息队列可能是 redis
    对 的一种尝试

    Redis 的数据存储在内存中,内存是瞬时的,如果 linux 宕机或重启,又或者 Redis 崩溃

    或重启,所有的内存数据都会丢失,为解决这个问题,Redis 提供两种机制对数据进行持

    久化存储,便于发生故障后能迅速恢复数据。
    (1)一种是通过RDB方式
    优点:由于存储的是数据快照文件,恢复数据很方便,也比较快
    缺点:
    1)会丢失最后一次快照以后更改的数据。如果你的应用能容忍一定数据的丢失,那么
    使用rdb是不错的选择;如果你不能容忍一定数据的丢失,使用 rdb 就不是一个很好的选

    择。
    2)由于需要经常操作磁盘,RDB 会分出一个子进程。如果你的 redis 数据库很大的话,
    子进程占用比较多的时间,并且可能会影响 Redis 暂停服务一段时间(millisecond 级别

    ),
    如果你的数据库超级大并且你的服务器 CPU 比较弱,有可能是会达到一秒。
    (2) 另一种是通过 AOF 方式

    优点: 1易扩展  2大数据量,高性能 3灵活的数据模型 4高可用 5 低成本
    N oSQ L 数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益
    于它的无关系性,数据库的结构简单。关系型数据库(例如 M ySQ L)使用查询缓存。

    这种查询缓存在更新数据后,缓存就是失效了。在频繁的数据读写交互应用中。 缓存的

    性能不高。N oSQ L 的缓存性能要高的多。
    M ySQ L 和 N oSQ L 都有各自的特点和使用的应用场景,两者结合使用。让关系数据库
    关注在关系上,N oSQ L 关注在存储上。
    Redis的5中数据类型
    (1)字符串类型 string   设值  set key value     获取    get  key
    (2)哈希类型 hash  设值  hset key value    获取  hget key
    (3)列表 list  设值  lpush key value[value....]   获取  lindex key index  index 为获取

    列表 key 中下标为指定 index 的元素,列表元素不删除,只是查询。   
    移除  lpop key语法:lpop key
    作用:移除并返回列表 key 头部第一个元素,即列表左侧的第一个下标值。相当于栈

    (stack)
    返回值:列表左侧第一个下标值; 列表 key 不存在,返回 nil
    rpop key  移除并返回列表 key 尾部第一个元素
     (4)集合类型 set  设值 sadd key member [member…]  获取
    语法:smembers key
    作用:获取集合 key 中的所有成员元素,不存在的 key 视为空集合
    srem 删除
    语法:srem key member [member…]
    作用:删除集合 key 中的一个或多个 member 元素,不存在的元素被忽略。
    返回值:数字,成功删除的元素个数,不包括被忽略的元素。
    (5)有序集合类型  zset
    设值:
    语法:zadd key score member [score member…]
    作用:将一个或多个 member 元素及其 score 值加入到有序集合 key 中,如果

    member存在集合中,则更新值;score 可以是整数或浮点数
    返回值:数字,新添加的元素个数
    获取:
    zrange
    语法:zrange key start stop [WITHSCORES]
    作用:查询有序集合,指定区间的内的元素。集合成员按 score 值从小到大来排序。

    start,stop 都是从 0 开始。0 是第一个元素,1 是第二个元素,依次类推。以 -1 表示最

    后一个成员,-2 表示倒数第二个成员。WITHSCORES 选项让 score 和 value 一同返回


    返回值:自定区间的成员集合
    zrevrange  
    语法:zrevrange key start stop [WITHSCORES]
    作用:返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到

    小)来排列。其它同 zrange 命令。
    返回值:自定区间的成员集合

    Redis中还有一个发布和订阅

    A 、 publish 发布消息
    语法: publish chanel message
    作用: 将 message 消息发送到 channel 频道。 message 是要发送的消息, channel

    是自定
    义的频道名称(例如 cctv1 ,cctv5),唯一标识发布者。
    返回值:数字。接收到消息订阅者的数量
    B 、 subscribe 订阅频道
    语法:subscribe channel [channel…]
    作用:订阅一个或多个频道的信息
    返回值:订阅的消息
    C 、 psubscribe 订阅使用统配符的一组频道
    语法:psubscribe pattern [pattern]
    作用:订阅一个或多个符合给定模式的频道。 模式以 * 作为通配符,比如 it* 匹配所有以

    it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有以 news.开头的

    频道( news.it 、 news.global.today 等等)
    返回值:订阅的信息
    D 、 unsubscribe 退订频道
    语法:unsubscribe channel [channel]
    作用:退出指定的频道,不订阅。
    返回值:退订的告知消息

    Redis的事务:
        Redis存在事务,但不完整。不存在语法错误时,可以在exec后回滚,反之,

    脑补。

    --------------------------------------------
    Redis集群  主从复制   避免单点故障,导致数据丢失

    安全设置   可以设置密码   还能设定特殊ip可访问

    在java中操作用的是jedis这个jar包  





  • 相关阅读:
    Ubuntu网卡配置
    Ubuntu软件包管理器
    更改系统语言环境
    简单泛型
    surface知识点
    RTMP协议
    直播技术之现代播放器原理
    直播技术之延迟优化
    直播技术之处理
    【转】草根老师的 linux字符设备驱动详解
  • 原文地址:https://www.cnblogs.com/zgxz/p/7805505.html
Copyright © 2011-2022 走看看