NoSQL复习

NoSQL简介

  • NoSQL,全名为Not Only SQL,指的是非关系型的数据库
  • 随着访问量的上升,网站的数据库性能出现了问题,于是nosql被设计出来

优点/缺点

  • 优点:
    • 高可扩展性
    • 分布式计算
    • 低成本
    • 架构的灵活性,半结构化数据
    • 没有复杂的关系
  • 缺点:
    • 没有标准化
    • 有限的查询功能
    • 最终一致是不直观的程序

分类

类型

部分代表

特点

列存储

Hbase

Cassandra

Hypertable

顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。

文档存储

MongoDB

CouchDB

文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。

key-value存储

Tokyo Cabinet / Tyrant

Berkeley DB

MemcacheDB

Redis

可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)

图存储

Neo4J

FlockDB

图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。

对象存储

db4o

Versant

通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。

xml数据库

Berkeley DB XML

BaseX

高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

 

 

安装

tar zxvf redis-x.x.x.tar.gz

  • 复制:推荐放到usr/local目录下

sudo mv -r redis-x.x.x/* /usr/local/redis/ 进入redis目录 cd /usr/local/redis/

  • 生成

sudo make

  • 测试

sudo make test 这段运行时间会较长

  • 安装:将redis的命令安装到/usr/bin/目录

sudo make install

运行

  • 启动服务器:在桌面目录

redis-server 按ctrl+c停止

  • 启动客户端:在新终端中运行如下代码

 

基本配置

  • 在源文件/usr/local/redis目录下,文件redis.conf为配置文件
  • 绑定地址:如果需要远程访问,可将此行注释

bind 127.0.0.1

  • 端口,默认为6379

port 6379

  • 是否以守护进程运行
    • 如果以守护进程运行,则不会在命令行阻塞,类似于服务
    • 如果以非守护进程运行,则当前终端被阻塞,无法使用
    • 推荐改为yes,以守护进程运行

daemonize no|yes

  • 数据文件

dbfilename dump.rdb

  • 数据文件存储路径

dir的默认值为./,表示当前目录 推荐改为:dir /var/lib/redis

使用配置文件方式启动

  • 直接运行redis-server会直接运行,阻塞当前终端
  • 一般配置文件都放在/etc/目录下

sudo cp /usr/local/redis/redis.conf /etc/redis/

  • 推荐指定配置文件启动

sudo redis-server /etc/redis/redis.conf

  • 停止redis服务

ps ajx|grep redis sudo kill -9 redis的进程id

redis-cli

  • 运行命令

ping set 'a' '123'

  • 当添加键值后,发现在当前运行的目录下,创建了一个文件:dump.rdb,这个文件用于将数据持久化存储

 

数据操作

  • redis是key-value的数据,所以每个数据都是一个键值对
  • 键的类型是字符串
  • 值的类型分为五种:
    • 字符串string
    • 哈希hash
    • 列表list
    • 集合set
    • 有序集合zset

 

redis数据库的常用操作

  • delete(*names):删除redis中的任意数据类型
  • exists(name):检测redis的name是否存在
  • keys(pattern='*'):根据模型获取redis的name

# 扩展:

    •  KEYS * 匹配数据库中所有 key 。   
    •  KEYS h?llo 匹配 hello , hallo 和 hxllo 等。 
    •  KEYS h*llo 匹配 hllo 和 heeeeello 等。   
    •  KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo
  • expire(name,time):为某个redis的某个name设置超时时间
  • rename(src,dst):对redis的name重命名
  • move(name,db):将redis的某个值移动到指定的db下
  • randomkey():随机获取一个redis的name(不删除)
  • type(name):获取name对应值的类型
  • scan(cursor=0, match=None, count=None)
  • scan_iter(match=None, count=None) :同字符串操作,用于增量迭代获取key
  • flushall 删除所有的keys
  • select 5 选择哪个库

转载于:https://my.oschina.net/u/3822958/blog/1813824

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值