OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

NodeJS连接Redis:在(Raspberry Pi)树莓派上安装Redis并设置开机自动启动服务


分享到
分类 技术前沿   关键字 分享   发布 kris  1418532030737
注意 转载须保留原文链接,译文链接,作者译者等信息。  

简介

Redis是一个超精简的基于内存的键值对数据库(key-value),官方只提供Linux版本,Windows版本(64位)由微软非官方提供,其编译后仅有1MB左右。实现非常精简,比如并没有传统数据库中库、表的概念,你并不能设置数据库/表的名字,仅能通过序号选择存放到第几个数据库,仅能通过序号选择存放到第几个数据库,使用<schema:hash>的键值来表示存放到什么表里(如user:001)。不过因为其基于内存且实现简单,Redis有着非常好的性能。

Redis的实现可能比HTML5中内置的离线数据库 IndexedDB 还要简单,一般程序员30分钟即可掌握,某些人希望Web端采用Redis而不是IndexedDB实现Web离线数据库,并例举了几大优点:

  • 简单API:没有复杂的架构迁移,只是一个简单的API,可以用来实现强大的东西。
  • 占地小:相比其它复杂性的实现,Redis的小巧迷死人了。每个浏览器厂商自主实施会非常简单。
  • 能力强:在浏览器中存储层采用SQL有点矫枉过正。同样,文档存储也不错,但是95%的用例也不用着。 Redis的给你一个简单的键值存储,这足以覆盖所有人的需求。

我们这里安装的是经典的2.8.x版,从3.x开始Redis加入了很多redis的集群管理功能,但2.8.x是最适合单机运行的版本。

Windows安装


Redis在Windows(64位)上的安装非常简单,到基Github主页,点击"Download Zip"即可,解压后会有bin\release目前有编译好的可执行文件。点击redis-server.exe 即可启动服务。

Linux(Debian)安装


在Debian上需要编译,才能安装Redis最新版,同样设置自动开机启动也需要一些配置,下面的安装脚本参考这篇文章,并针对最新版作出了修改。

1 安装编译时所需的一些工具

sudo apt-get install build-essential

2 不想每次都输sudo可使用切换到root用户
sudo -s

3 创建一个编译的目录
mkdir /opt/redis
cd /opt/redis

4. 下载最新版的压缩包,若版本有更新可将redis-2.8.24批量改换成最新版的文件名

wget http://download.redis.io/releases/redis-2.8.24.tar.gz
tar -xzf redis-2.8.24.tar.gz
cd redis-2.8.24
# 编译并安装
make install

5. 将编译好的可执行文件放到/opt/redis,debian开机时会寻找这些文件
cp /opt/redis/redis-2.8.24/src/redis-benchmark /opt/redis/
cp /opt/redis/redis-2.8.24/src/redis-cli /opt/redis/
cp /opt/redis/redis-2.8.24/src/redis-server /opt/redis/
cp /opt/redis/redis-2.8.24/src/redis-check-aof /opt/redis/
cp /opt/redis/redis-2.8.24/src/redis-check-dump /opt/redis/

6. 创建一个Redis用户(与FTP类似,提高安全性,防止其他用户访问Redis,查看日志,以及限制Redis本身的活动范围)
adduser --system --no-create-home --disabled-login --disabled-password --group redis

7. 
创建可写的日志文件(log),将此文件的所有者变更为redis
touch /var/log/redis.log
chown redis:redis /var/log/redis.log
chmod u+w /var/log/redis.log

8. 创建Redis配置文件 这里使用 nano 进行编译,
你也可以使用VIM,安装: apt-get install nano
mkdir /etc/redis
touch /etc/redis/redis.conf
chown redis:redis -R /etc/redis/

9. 创建Redis配置
nano /etc/redis/redis.conf

10.  编写配置, 下面是个范例 如需密码保护请设置requirepass,
daemonize yes
pidfile /var/run/redis.pid
logfile /var/log/redis.log
port 6379
# bind 127.0.0.1
# unixsocket /tmp/redis.sock
timeout 300
loglevel verbose
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /var/redis/
# requirepass foobared

11 创建一个存放数据库的地方
mkdir /var/redis
chown redis:redis /var/redis
chmod u+xw /var/redis

12 创建开机启动脚本
cd /etc/init.d/
nano redis

13. 开机启动脚本内容
#! /bin/sh
### BEGIN INIT INFO
# Provides:   redis-server
# Required-Start: $syslog
# Required-Stop:  $syslog
# Should-Start:   $local_fs
# Should-Stop:    $local_fs
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description:  redis-server - Persistent key-value db
# Description:    redis-server - Persistent key-value db
### END INIT INFO


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/redis/redis-server
DAEMON_ARGS=/etc/redis/redis.conf
NAME=redis-server
DESC=redis-server
PIDFILE=/var/run/redis.pid

test -x $DAEMON || exit 0
test -x $DAEMONBOOTSTRAP || exit 0

set -e

case "$1" in
  start)
  echo -n "Starting $DESC: "
  touch $PIDFILE
  chown redis:redis $PIDFILE
  if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS
  then
    echo "$NAME."
  else
    echo "failed"
  fi
  ;;
  stop)
  echo -n "Stopping $DESC: "
  if start-stop-daemon --stop --retry 10 --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
  then
    echo "$NAME."
  else
    echo "failed"
  fi
  rm -f $PIDFILE
  ;;

  restart|force-reload)
  ${0} stop
  ${0} start
  ;;
  *)
  echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
  exit 1
  ;;
esac

exit 0

14 为Redis添加权限,并设置开机自动运行
chmod u+x redis
update-rc.d -f redis defaults

# 测试一下
./redis start

15 安装完成后,即可运行此命令连接从本地远程连接Redis进行测试; 不输入参数的话将默认以无密码方式访问本机(6379端口)的redis

redis-cli -h <主机ip> -p <端口> -a <密码>


16 【其它】 移除开机启动。有时侯你可能需要将其从开机启动中删除,切换到: /etc/init.d 目录下,并执行
sudo update-rc.d -f redis remove  #开机时不启动

在node.js中访问redis


需要先安装node_redis模块

npm install redis

基本用法

var redis = require("redis")
  , client;

client = redis.createClient(6379, '127.0.0.1', {});

// 密码
client.auth('密码');

// 选择数据库,比如第3个数据库,默认是第0个
client.select(3, function() { /* ... */ });

client.on("error", function (err) {
    console.log("Error " + err);
});

// 设置键值
client.set("Testing", "string val", redis.print);

// 取值
client.get("Testing", function(err, replies) {
   
});

// 其它API
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
     console.log(replies.length + " replies:");
     replies.forEach(function (reply, i) {
         console.log("    " + i + ": " + reply);
     });
     client.quit();
});


// 枚举趣出数据库中的所有键
client.keys('*', function (err, keys) {

});


社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 在 2016 年学 JavaScript 是一种什么样的体验?
  2. 2016年收入最高的5个编程语言,JavaScript最流行,Java和C没在前5
  3. 传言GITHUB正在寻求第二轮融资,或面临估值下降、清算或被微软收购
  4. NodeJS中的客户端缓存、浏览器缓存、304缓存和OnceIO的缓存控制
  5. Java 之父求职被嫌年纪大,硅谷公司现在喜欢“小鲜肉”,不爱“老古董”
  6. NodeJS中的Middleware是什么?在OnceIO中创建和使用中间件
  7. OnceIO(NodeJS)中的服务器端缓存、模板预加载和静态资源文件的缓存和Gzip压缩机制
  8. OnceIO(Node.JS)中的模板引擎是什么及MVC设计模式的使用与实现
  9. OnceIO(Node.JS)的静态文件路由(app.static)
  10. OnceIO(Node.JS)的网页(模板)的引用与嵌套
  11. AirJD-简单好用的免费建站工具

 相关阅读 - 技术前沿
  1. NodeJS连接Redis:在(Raspberry Pi)树莓派上安装Redis并设置开机自动启动服务
  2. 传言GITHUB正在寻求第二轮融资,或面临估值下降、清算或被微软收购
  3. 2016年收入最高的5个编程语言,JavaScript最流行,Java和C没在前5
  4. Java 之父求职被嫌年纪大,硅谷公司现在喜欢“小鲜肉”,不爱“老古董”
  5. GitHub2016报告AngularJS流行度下降,JavaScript活跃度为Java两倍
  6. 使用Bootstrap、Electron和JavaScript开发桌面应用
  7. Redis和Memcached的区别-从源码解读Reids的实现原理
  8. 三星拟收购NodeJS主要赞助商Joyent
  9. 快速激发灵感的7个安卓应用模板
  10. 天猫双11前端分享系列(四):大规模 Node.js 应用

 关键字 - 分享
  1. 【示例教程】如何使用LEADTOOLS图像标注控件在界面上对图像进行标注
  2. 有了大数据加智能,你愿把荷包交给机器打理吗?
  3. 【更新】视频处理软件BB FlashBack更新至v5.27,提高摄像头FPS
  4. 【教程】FileAudit入门的基本要求
  5. MyEclipse项目迁移常见问题解答
  6. DevExpress v17.2新版亮点—WinForms篇(一)
  7. 高报酬寻安卓APP马甲和iOS马甲上架技术人员, 上架一个最高30000元
  8. 六款互联网人不容错过的软件神器
  9. 【示例教程】如何通过leadtools读取二维码中的中文
  10. 【更新】Windows网络守门人UserLock更新至v9.6,可通过Webhooks获取实时登录通知

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号