`
wbj0110
  • 浏览: 1610231 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Redis-- 超高性能的key-value数据库

阅读更多

下载地址:http://code.google.com/p/redis/

-------------------------------------------------------------------------------------

说明:

redis 是一个高性能的key-value数据库。

redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。

它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。问题是这个项目还很新,可能还不足够稳定,而且没有在实际的一些大型系统应用的实例。

此外,缺乏mc中批量get也是比较大的问题,始终批量获取跟多次获取的网络开销是不一样的。

性能测试结果:

SET操作每秒钟 110000 次,GET操作每秒钟 81000 次

 

 

数据库主要类型有对象数据库,关系数据库,键值数据库等等,对象数据库太超前了,现阶段不提也罢;关系数据库就是平常说的MySQL,PostgreSQL这些熟的不能再熟的东西,至于键值数据库则是本文要着重说的,其代表主要有MemcacheDBTokyo Cabinet等等。

Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序(SORT)等高级功能,在实现INCR,SETNX等功能的时候,保证了其操作的原子性,除此以外,还支持主从复制等功能。

详细描述参见官方手册,同时,官方提供了一个名为Retwis的项目的源代码,可以对照着官方介绍学习,注意其中关于Data Layout的描述,其他没什么。

项目实践中,多以关系数据库为主,不过合理的使用Redis这样的键值数据库,往往能扬长避短,比如说实现一个类似消息队列的功能,对MySQL来说,除非使用Q4M,否则很难满足高并发请求,不过对Redis来说,通过内建的Lists支持,消息队列就是小菜一碟。

Redis的安装

tar zxvf redis-version.tar.gz
cd redis-version
make

由于没有make install,所以得把源代码目录里的关键文件手动复制到适当的位置:

cp redis.conf /etc/
cp redis-benchmark redis-cli redis-server /usr/bin/

如果内存情况比较紧张的话,需要设定内核参数:

echo 1 > /proc/sys/vm/overcommit_memory

然后编辑redis.conf配置文件(/etc/redis.conf),按需求做出适当调整,比如:

daemonize yes
logfile /dev/null

如果要记录日志的话,最好先调整loglevel到一个合适的级别,然后设定logfile,如果不需要,则可以像上面这样直接把日子丢弃到/dev/null里,还有一点,缺省情况下,数据文件dump.rdb会被生成到当前目录,可以通过dir参数设定合适的目录。

此外,如果你决定把Redis用于产品环境,还要注意maxmemory选项,因为Redis在启动时会把所有数据加载到内存中,所以设定maxmemory相对安全。

接下来直接启动服务就可以了,只有配置文件一个参数:

redis-server /etc/redis.conf

确认运行了之后,可以用redis-benchmark命令测试看看,还可以通过redis-cli命令实际操作一下,比如:

redis-cli set foo bar
OK
redis-cli get foo
bar

在设置键对应的值的时候,按照协议的规定是要提供数据大小这个参数的,上面的redis-cli命令之所以没有提供这个参数是因为redis-cli本身进行了封装。

可以通过telnet来验证一点:

telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 3
bar
+OK
get foo
$3
bar
^]
telnet> quit
Connection closed.

更多命令介绍参考文档介绍

Redis源代码里附带了多种客户端的扩展,比如说php(client-libraries/php),这是一个纯PHP的实现方案,也有二进制版本的实现(phpredis)。其他语言即便没有现成的扩展实现,也可以自己按照协议规范写一个扩展,应该不是什么难事。

Redis内存要求很高,如果你的数据量很大的话,可能会导致系统使用swap,这会使性能急剧下降。此时更好的方法是通过consistent hashing把数据分布到多个服务器上,文档上给出了简单的例子解释:

For example imagine to have N Redis servers, server-0, server-1, ..., server-N. You want to store the key "foo", what's the right server where to put "foo" in order to distribute keys evenly among different servers? Just perform the crc = CRC32("foo"), then servernum = crc % N (the rest of the division for N). This will give a number between 0 and N-1 for every key. Connect to this server and store the key.

在线演示:
http://try.redis-db.com/

参考链接:

http://redis.io/

http://github.com/jdp/redisent/tree/master
http://github.com/owlient/phpredis
http://rediska.geometria-lab.net/

分享到:
评论

相关推荐

    Redis-x64-5.0.14.msi和Redis-x64-5.0.14.zip

    解压后,你可以找到包括`redis-server.exe`、`redis-cli.exe`等在内的可执行文件,以及配置文件`redis.conf`。这种方式适合于需要自定义配置或手动管理服务的用户。通过编辑`redis.conf`,你可以调整Redis的各项参数...

    Redis稳定版 Redis-x64-5.0.14.1.zip

    - `redis-benchmark`: 性能测试工具,用于测量Redis的读写速度。 - `redis-check-aof`: 检查AOF日志文件的工具,确保其一致性。 - `redis-check-rdb`: 检查RDB快照文件的工具,确认数据无损。 安装Redis-x64-5.0....

    redis-windows-7.2.4.zip

    - 解压"redis-windows-7.2.4.zip",找到`redis-server.exe`启动文件。 - 运行`redis-server.exe`,默认情况下,Redis监听6379端口。 - 可以通过配置文件`redis.windows.conf`修改默认设置,如端口、内存限制、...

    redis安装文件Redis-x64-3.2.10、Redis-x64-3.0.50

    可以尝试发送一些基本命令,如`SET key value`、`GET key`等。 5. 安全设置:生产环境中,为了安全,你需要设置访问控制,例如通过`requirepass`配置项设置密码,限制远程访问,或者使用防火墙规则。 6. 持久化:...

    Redis-x64-3.2.100.zip

    - 使用`redis-benchmark`进行性能测试,找出瓶颈并优化。 综上所述,这个压缩包提供了在Windows环境下运行Redis所需的基本组件和文档,帮助用户在非Linux系统上搭建和管理Redis服务。通过正确配置和使用这些文件,...

    tomcat-redis-session-manager的jar包-包含Tomcat7和Tomcat8

    《深入理解Tomcat-Redis-Session-Manager:在Tomcat7和Tomcat8中的应用》 ...无论是为了提升服务性能,还是为了应对复杂的集群环境,Tomcat-Redis-Session-Manager都是一个值得考虑的优秀解决方案。

    redis-64.3.0.503

    - **redis-benchmark**:性能测试工具,可以用来测量Redis的吞吐量和延迟。 - **redis-check-aof**和**redis-check-rdb**:用于检查和修复AOF文件和RDB文件的工具。 - **其他库文件和文档**:可能包含必要的库文件...

    Redis-x64-5.0.14 windows

    Redis的核心概念包括键(key)、值(value)和数据类型。键是用于标识存储内容的唯一标识符,值则是键所关联的数据。Redis支持多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序...

    Windows版本Redis-x64-5.0.14安装包

    2. **redis-benchmark.exe**:这是一个性能测试工具,可以用来测量Redis服务器的读写速度。 3. **redis-cli.pdb**:客户端命令行界面的调试信息文件。 4. **redis-check-aof.pdb**:用于检查Append Only File(AOF)...

    redis-windows-7.0.10.zip

    Redis的核心组件包括`redis-server.exe`(服务器进程)、`redis-cli.exe`(命令行客户端)以及`redis-benchmark.exe`(性能测试工具)等。用户需要通过`redis-server.exe`启动服务,并通过`redis-cli.exe`进行交互式...

    another-redis-desktop-manager.1.5.5.exe Redis数据库连接软件(好用)

    本文将详细介绍“another-redis-desktop-manager.1.5.5.exe”这款Redis数据库连接软件,帮助用户更好地管理和操作Redis数据库。 首先,"another-redis-desktop-manager"是一款基于桌面的Redis管理工具,其1.5.5版本...

    phpredis-master.zip php中redis扩展库

    $value = $redis->hGet('hashKey', 'field1'); ``` - 集合操作(Sadd/Srem/Sismember): ```php $redis->sAdd('setKey', 'member1', 'member2'); $redis->sRem('setKey', 'member1'); $exists = $redis->...

    redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz

    这里的 "redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz" 文件是一个针对 Red Hat Enterprise Linux 7 (RHEL7) 平台的 64 位版本的 Redis Stack 6.2.6 包。这个压缩包包含了运行 Redis Stack 所需的所有组件,...

    Redis-dump安装.rar

    Redis-dump是一个用于导出和导入Redis数据库内容的工具,主要功能是将Redis的数据备份到磁盘上,以便在需要时恢复数据。本教程将详细介绍如何在Windows环境下使用msys2和ruby进行Redis-dump的安装。 首先,我们需要...

    Another-Redis-Desktop-Manager.1.6.1

    《Redis桌面管理器Another-Redis-Desktop-Manager详解》 Redis,全称为Remote Dictionary Server,是一种高性能的键值存储系统,常被用作数据库、缓存和消息中间件。其简洁的数据结构和丰富的数据类型使其在分布式...

    Redis-x64-5.0.14.1软件安装包

    Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object...

    redis-windows-redis7.0.5.zip

    描述中提到“Redis是一个高性能的key-value数据库”,这是对Redis核心功能的简洁概述。作为键值数据库,Redis通过键(key)来唯一标识每个数据项,并允许快速查找和操作对应的值(value)。其高性能主要来源于以下几...

    Redis-Windows-6.2.6.zip

    3. `redis-benchmark.exe`是性能测试工具,可以用来衡量Redis服务器的读写速度和并发能力。 4. `redis-check-aof`和`redis-check-rdb`则是用于检查和修复AOF(Append Only File)和RDB(Snapshot)持久化文件的工具...

    redis-windows-7.0.8.zip

    例如,`SET key value`用来设置键值对,`GET key`用来获取键对应的值。 5. **数据结构与操作**:Redis支持多种数据结构,每种都有其特定的应用场景。例如: - **字符串**:最基础的数据类型,可以存储任何序列化后...

Global site tag (gtag.js) - Google Analytics