NOSQL Redis

作者: 杨璐瑶 | 来源:发表于2019-05-16 16:02 被阅读0次

    一、NOSQL:

    (非关系型的数据库)

    1.High performance - 对数据库高并发读写的需求

    2.Huge Storage - 对海量数据的高效率存储和访问的需求

    3.High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求


    二、主流的NOSQL:

    键值(Key-Value)存储数据库

    相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB

    典型应用: 内容缓存,主要用于处理大量数据的高访问负载。

    数据模型: 一系列键值对

    优势: 快速查询

    劣势: 存储的数据缺少结构化

    列存储数据库

    相关产品:Cassandra, HBase, Riak

    典型应用:分布式的文件系统

    数据模型:以列簇式存储,将同一列数据存在一起

    优势:查找速度快,可扩展性强,更容易进行分布式扩展

    劣势:功能相对局限

    文档型数据库

    相关产品:CouchDB、MongoDB

    典型应用:Web应用(与Key-Value类似,Value是结构化的)

    数据模型: 一系列键值对

    优势:数据结构要求不严格

    劣势: 查询性能不高,而且缺乏统一的查询语法

    图形(Graph)数据库

    相关数据库:Neo4J、InfoGrid、Infinite Graph

    典型应用:社交网络

    数据模型:图结构

    优势:利用图结构相关算法。

    劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。


    三、Redis键值数据类型:

    字符串类型 stringMap<String,String>

    散列类型 hash 值又是一个map集合Map<String,map<String,String>>

    列表类型 listMap<String,list<String>>

    集合类型 setMap<String,set<String>>

    有序集合类型 sortedsetMap<String,sortedset>

    key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低查找效率

    key不要太短,如果太短会降低key的可读性

    在项目中,key最好有一个统一的命名规范


    四、Redis命令:

    (1)String:

    set name "itcast"

    get name

    del name

    (2)hash:

    hset myhash username haohao

    hget myhash username

    hdel myhash username

    (3)list:

    lpush mylist a b c

    lpop mylist          返回并弹出第一个元素

    rpop mylist          从尾部弹出元素

    (4)set:

    sadd myset a b c  (该key的值已有则不会重复添加)

    smembers myset (获取set中所有的成员)

    srem myset a b (删除set中指定的成员)

    (5)通用命令:

    keys * 获取所有与pattern匹配的key

    del company 删除指定的key

    exists compnay  判断该key是否存在,1代表存在,0代表不存在

    type company 获取指定key的类型。该命令将以字符串的格式   返回。返回的字符串为string、list、set、hash,如果key不存在返回none

    expire 设置过期时间:expire key 秒值


    五、异常:

    java.util.MissingResourceException: Can't find bundle for base name redis

    (.properties)文件要放在根目录下,即src下

    相关文章

      网友评论

        本文标题:NOSQL Redis

        本文链接:https://www.haomeiwen.com/subject/dxeiaqtx.html