简介
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) {
});
"Download Zip"解压后,并无好redis-server.exe,要编译才行
Redis for Windows 2.6,软件大小:1.13 MB,有32、64版本,解压后有redis-server.exe,可直接使用
mark
可以