您的位置:首页 > 数据库

NOSQL数据库

2016-08-10 22:29 148 查看
memcache

mysql内存表 ENGINE= MEMORY max_heap_table_size MAX_ROWS mysql临时表 tmp_table_size

memcached服务维护了一张内存表(hahstable)

key value

memcached 的 key一般是 字串, 不能重复

value可以放入(字符串,数值,数组,对象,布尔,二进制数据[图片/视频],null)

安装 memcache.exe -d install 缺少msvcr71.dll 管理员身份安装

启动关闭 memcache.exe -d start memcache.exe -d stop shell命令:memcache.exe -p port

成功启动 netstat -an port 11211 netstat -anb

memcached服务 Telnet工具 PHP程序php_memcache.dll【与PHP版本一致】(memcache扩展,memcached扩展,socket)

telnet 127.0.0.1 11211 CRUD ctrl+]

add key 0(标志,一般默认,代表是否压缩) 存放时间 数据大小(字符)

get key

set/replace key 0 存放时间 数据大小(字符)

delete key

序列化(数据信息+数据类型) json(key-value)

exprie 直接给的是秒数,则最大 30*3600*24。如果你希望保持时间超过30 time()+天数*3600*24 即可

memcache内部机制:libevent 跨平台,并发处理。内置内存存储方式:LRU(least recently used)

memcache分布式: addserver

session入memcache: ini_set session.save_handler session.save_path

memcache session 区别:提速,无状态数据

memcache 安全:Windows防火墙

适用数据:变化频繁,具有不稳定的数据,不需要实时入库(在线状态,在线人数…)

数据缓存系统:

mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据。mongodb和memcached不存在谁替换谁的问题。和memcached

更为接近的是redis。

它们都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存。

Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)。

Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。

MongoDB:主要解决海量数据的访问效率问题。

Memcached单个key-value大小有限,一个value最大只支持1MB,而Redis最大支持512MB

Mongod

server:mongod –dbpath D:\weixin\mongodb\db

client:mongo 127.0.0.1:27017/admin

图形化客户端:MongoVUE

show dbs //显示数据库列表

use dbname //进入dbname数据库

show collections //显示数据库中的集合

db.users.save({“name”:”lzy”}) //创建了名为users的集合,并新增一条的数据

db.users.insert({“name”:”ghost”, “age”:10})

db.users.find() 查找users集合中所有数据

db.users.findOne() 查找users集合中的第一条数据

db.users.update({“name”:”ghost”}, {“age”:24}) //修改

db.users.remove({“name”: “lzy”}) //删除users集合下name=lecaf的数据

db.users.drop() //删除集合users

db.runCommand({“dropDatabase”: 1}) //删除当前数据库

Redis

启动服务端:redis-server redis.conf

客户端连接:redis-cli

图形化客户端:Redis Client

操作字符串

set key value //如果key不存在则建立,如果key存在则修改其值

get key //取值

mset key1 value1 key2 value2 //一次设置多个值

mget key1 key2 //一次获取多个值

getset key nrevalue //获取并返回旧值,在设置新值

append key value //把value追加到key 的原值上

getrange key start stop //获取字符串中[start, stop]范围的值

setex key time value //设置key对应的值value,并设置有效期为time秒

strlen key //取指定key的value值的长度

操作数字

incr key //自增,返回新值

incrby key 2 //跳2自增,返回新值

操作key

randomkey:返回随机key 

type key:返回key存储的类型

exists key:判断某个key是否存在

del key:删除key

rename key newkey:改名

ttl key:查询key的生命周期(秒)

expire key 整数值:设置key的生命周期以秒为单位

pexpire key 整数值:设置key的生命周期以毫秒为单位

pttl key:查询key 的生命周期(毫秒)

perisist key:把指定key设置为永久有效

操作链表

lpush key value:把值插入到链表头部

rpush key value:把值插入到链表尾部

lpop key :返回并删除链表头部元素

rpop key: 返回并删除链表尾部元素

llen key:计算链表的元素个数

操作hash

hset myhash field value:设置myhash的field为value

hget myhash field:获取指定的hash field

操作集合

sadd key value1 value2:往集合里面添加元素

smembers key:获取集合所有的元素

srem key value:删除集合中某个元素

srandmember key:随机取一个元素

sismember key value:判断集合是否有某个值

scard key:返回集合元素的个数

操作有序集合

zadd key score1 value1:添加元素

zrank key member:查询member的排名

zcard key:返回集合元素的个数

服务器相关命令

select:选择数据库

dbsize:返回当前数据库中key的数目

info:获取服务器的信息和统计

monitor:实时转储收到的请求

config get 配置项:获取服务器配置的信息

config set 配置项 值:设置配置项信息

flushdb:删除当前选择数据库中所有的key

flushall:删除所有数据库中的所有的key

time:显示服务器时间,时间戳(秒),微秒数

save:保存rdb快照

lastsave:上次保存时间

memcache

安装:memcached -d install

sc create “memcached_11211” start= demand binPath= “D:\software_package\memcached_win32_1.4.5\memcached.exe -d runservice -m 16 -p 11211 -n 48 -c 2 -f 1.05” DisplayName= “memcached_11211”

否安装成功:memcached –h

启动:memcached -d start

sc start “memcached_11211”

客户端:telnet 127.0.0.1 11211

用telnet连接Memcached,窗口中不显示字符—-按住“Ctrl+]” 回车解决问题。



set key 0 0 4 不存在时进行添加,存在时进行更新

add key 0 0 3 只有数据不存在时进行添加

replace key 0 0 2 只有数据存在时进行替换

delete key 删除已存在的键值

get key 查看添加进去的记录

stats 全局统计

flush_all 清空所有缓存

默认参数说明

-p 监听的端口

-l 连接的IP地址, 默认是本机

-d start 启动memcached服务

-d restart 重起memcached服务

-d stop|shutdown 关闭正在运行的memcached服务

-d install 安装memcached服务

-u 以的身份运行 (仅在以root运行的时候有效

-m 最大内存使用,单位MB。默认64M

-M 内存耗尽时返回错误,而不是删除

-c 最大同时连接数,默认是102

-f 块大小增长因子,默认是1.2

-n 最小分配空间,key+value+flags默认是4

-h 显示帮助

https://github.com/junstor/memadmin

Linux下Mongodb安装

1.下载安装包:wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz 解压:tar zxf mongodb-linux-i686-1.8.2.tgz
2. 安装准备:mv mongodb-linux-i686-1.8.2 /usr/local/mongodb
创建数据库文件夹与日志文件
mkdir /usr/local/mongodb/data
touch /usr/local/mongodb/logs
3. 设置开机自启动
将mongodb启动项目追加入rc.local保证mongodb在服务器开机时启动
echo "/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data –logpath=/usr/local/server/mongodb/logs –logappend  --auth –port=27017" >> /etc/rc.local
4. 启动mongodb:cd到mongodb目录下的bin文件夹启动mongodb
/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/mongodb/logs --logappend  --auth  --port=27017 –fork
5. 参数解释
--dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)
6. 进入数据库的CLI管理界面:cd到mongodb目录下的bin文件夹,执行命令./mongo
[root@namenode mongodb]# ./bin/mongo
MongoDB shell version: 1.8.2
> show dbs;
> use dbname;
> exit;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  memcache redis nosql mongdb