设为首页 收藏本站
查看: 893|回复: 0

[经验分享] memcached,mongdb,redis,Tokyo Tyrant的安装和使用

[复制链接]
发表于 2016-12-20 11:11:00 | 显示全部楼层 |阅读模式
  本文准备介绍最常用的四种nosql技术的安装和使用方法,包括如何使用java进行数据访问和操作。
    本文的所有操作都在centos5.6版本上测试通过,请保证系统已经安装了gcc,以便make命令可以正常使用,centos上可以使用命令yum install gcc安装。
  1. mongodb
  
     mongodb的安装最简单了,官方地址:http://www.mongodb.org

cd /data
wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.1.tgz
tar xf mongodb-linux-i686-1.8.1.tgz
cd mongodb-linux-i686-1.8.1
mkdir data
mkdir logs
bin/mongod --dbpath ./data --logpath ./logs/mongod.log &
  这样mongdb服务就启动了,其中--dbpath参数指定了数据存放位置,--logpath参数指定了日志存放位置,注意这两个目录  都需要手动创建,不然启动会报错的。

[iyunv@localhost mongodb-linux-i686-1.8.1]# ps axu|grep mongod
root      4486  0.7  0.7  76136  4712 pts/0    Sl   06:43   0:00 bin/mongod --dbpath ./data --logpath ./logs/mongod.log
root      4494  0.0  0.1   4028   696 pts/0    R+   06:43   0:00 grep mongod
  通过上面命令可以看到mongod服务确实已经在后台运行了,下面我们来用mongodb提供的客户端访问。

[iyunv@localhost mongodb-linux-i686-1.8.1]# bin/mongo
MongoDB shell version: 1.8.1
connecting to: test
> db.foo.save( { a : 1 } )
> db.foo.find()
{ "_id" : ObjectId("4df499b407ad992f4c1abc9a"), "a" : 1 }
>
  bin/mongo 命令用来连接mongodb服务,默认连接localhost,端口27017,可以分别使用参数--host,--port指定,mongodb --help可以看到连接命令的帮助信息。连接成功后,更多的操作命令可以使用db.help()查看,官方文档写的也很详细,http://www.mongodb.org/display/DOCS/Tutorial。
  mongodb支持很多种开发语言,官方网站上都有介绍,java的地址是:http://www.mongodb.org/display/DOCS/Java+Language+Center,介绍的很详细,我就不啰嗦了,就给一个例子吧,见附件nosql-demo.zip。
  2.Tokyo Tyrant
  Tokyo Tyrant以前是sourceforge.net上的开源项目,现在已经迁移到fallabs.com,官方地址是:http://fallabs.com/tokyotyrant/。
  Tokyo Tyran is network interface of Tokyo Cabinet,所以需要先安装Tokyo Cabinet,官方地址是:http://fallabs.com/tokyocabinet/  。
  而Tokyo Cabinet又依赖于zlib和bzip2,官方网址分别是 http://www.zlib.net/和http://www.bzip.org/,无奈zlib的地址必须翻 墙才能打开,为了广大老实的孩子们在墙这边就能下载,咱就上传下zlib的二进制包吧,见附件 zlib-1.2.5.tar.gz。
  下面介绍整个安装步骤:
  (1)安装zlib
  翻 墙到 http://www.zlib.net/ 下载zlib,或者直接从本文的附件下载,上传到/data目录中,然后使用下面命令安装。    

cd /data
tar -xf zlib-1.2.5.tar.gz
cd zlib-1.2.5
./configure
make
make install
  (2)安装bzip2

cd /data
wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar xf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make
make install
  (3)安装Tokyo Cabinet

cd /data
wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.47.tar.gz
tar xf tokyocabinet-1.4.47.tar.gz
cd tokyocabinet-1.4.47
./configure
make
make install
  (4)安装Tokyo Tyrant 

cd /data
wget http://fallabs.com/tokyotyrant/tokyotyrant-1.1.41.tar.gz
tar xf tokyotyrant-1.1.41.tar.gz
cd tokyotyrant-1.1.41
./configure
make
make install
  到此为止,算是安装完了,现在使用下面命令启动服务:ttservctl start
  我这里很悲剧的出错了: cannot restore segment prot after reloc: Permission denied
  google一下,发现需要修改下文件 /etc/sysconfig/selinux,将SELINUX=enforcing 改为 SELINUX=disable,想知道为啥的话可以google下.
  OK,再执行命令 ttservctl start ,终于正常启动了。
  下面验证下服务是否正常。Tokyo Tyrant的安装包自带了一个检测工具,测试Tokyo Tyrant的性能。用下面命令来执行:

/data/tokyotyrant-1.1.41/make check
  之后可以看到有Writing Test / Reading Test / Removing Test / Random Concatenating Test / Miscellaneous Test / Wicked Writing Test / Typical Access Test / Threading Test 等多种测试方式被执行,并打印出测试结果。恭喜,tokyotyrant算是安装完成了。
  接下来,我们来看看怎样用java程序访问Tokyo Tyrant。一般可以采用tokyotyrant-java来访问,地址是http://code.google.com/p/tokyotyrant-java/。附件的demo程序中有两个例子MRDBExample.java和MRDBExample.java,展示了如何使用tokyotyrant-java,其实也是相当的简单。需要注意的是这两个例子需要依赖netty和slf的jar包。
  3. memcached
  
  memcached依赖于libevent项目,需要先安装libevent,官方地址是:http://www.monkey.org/~provos/libevent/ 安装过程如下:

cd /data
wget http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
tar xf libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable
./configure
make
make install
  下面安装memcached,官方地址是http://www.memcached.org ,安装过程如下:

cd /data
wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
tar xf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure
make
make install
  使用下面命令启动服务
 /usr/local/bin/memcached -d -m 128 -u root -p 11211 –P /tmp/memcached.pid
 参数: -d 启动守护进程(后台运行)
      -m 分配给memcache使用的内存,单位是MB
      -u 运行memcached的用户
      -l 监听的服务器IP
      -p 监听的服务器端口,默认是11211
      -P(大写) 保存Memcache的pid文件,后面跟路径
  会发现报错,说找不到库libevent-2.0.so.5
/usr/local/bin/memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory 
  解决方法是建立一个软链接:
     sudo ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5 
  再次执行启动命令就没错误了,ps下发现进程确实是存在的。

[iyunv@hd129 memcached-1.4.5]# ps axu|grep memcached
root     12132  0.0  0.3  54008   796 ?        Ssl  13:14   0:00 /usr/local/bin/memcached -d -m 128 -u root -p 11211 ?CP /tmp/memcached.pid
root     12159  0.0  0.3   4028   700 pts/0    R+   13:21   0:00 grep memcached
  下面我们看下怎么用java程序访问memcached服务,到https://github.com/gwhalin/Memcached-Java-Client下载java_memcached-release_2.6.1.zip,示例程序见附件nosql-demo.zip。
  4. redis
  redis的官方地址是http://redis.io/,安装起来很简单,如下:

cd /data
wget http://redis.googlecode.com/files/redis-2.2.9.tar.gz
tar xf redis-2.2.9.tar.gz
cd redis-2.2.9
make
make install
  启动redis服务之前,先修改下配置文件 /data/redis-2.2.9/redis.conf,将daemonize no 改为daemonize yes,表示redis将做为后台服务启动。然后使用下面命令启动redis,redis-server脚本已经被copy到/usr/local/bin目录下了,所以可以直接不带路径使用。

redis-server redis.conf
  下面使用redis自带的客户端访问redis服务:

redis-cli
redis> set foo bar1
OK
redis> get foo
"bar1"
  redis.conf配置选项如下
daemonize 是否以后台进程运行,默认为no
pidfile 如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid
bind 绑定主机IP,默认值为127.0.0.1(注释)
port 监听端口,默认为6379
timeout 超时时间,默认为300(秒)
loglevel 日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning
logfile 日志记录方式,默认值为stdout
databases 可用数据库数,默认值为16,默认数据库为0
save <seconds> <changes> 指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。
save 900 1  900秒(15分钟)内至少有1个key被改变
save 300 10  300秒(5分钟)内至少有300个key被改变
save 60 10000  60秒内至少有10000个key被改变
rdbcompression 存储至本地数据库时是否压缩数据,默认为yes
dbfilename 本地数据库文件名,默认值为dump.rdb
dir 本地数据库存放路径,默认值为 ./
slaveof <masterip> <masterport> 当本机为从服务时,设置主服务的IP及端口(注释)
masterauth <master-password> 当本机为从服务时,设置主服务的连接密码(注释)
requirepass 连接密码(注释)
maxclients 最大客户端连接数,默认不限制(注释)
maxmemory <bytes> 设置最大内存,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。(注释)
appendonly 是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为no
appendfilename 更新日志文件名,默认值为appendonly.aof(注释)
appendfsync 更新日志条件,共有3个可选值。no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次(默认值)。
vm-enabled 是否使用虚拟内存,默认值为no
vm-swap-file 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
vm- max-memory 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的 (Redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0。
 
  再看看怎样用java程序访问redis服务。到https://github.com/xetorthio/jedis下载jedis的jar包:jedis-2.0.0.jar。示例程序见附件nosql-demo.zip。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316930-1-1.html 上篇帖子: 构建智能路由nginx+lua+redis 下篇帖子: Spring 整合Redis详解(增删改查、PipleLine、测试代码)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表