- 浏览: 1017312 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
为了方便查阅资料,特将网上搜索到的Redis相关安装配置进行归档整理:
window平台Redis安装
下载地址: http://code.google.com/p/servicestack/wiki/RedisWindowsDownload
Redis文件夹有以下几个文件
redis-server.exe
:服务程序
redis-check-dump.exe :本地数据库检查
redis-check-aof.exe :更新日志检查
redis-benchmark.exe :性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).
指定redis的配置文件,如没有指定,则使用默认设置
解压目录:\>redis-server.exe redis.conf
redis-cli.exe:命令行客户端,测试用
设置一个Key并获取返回的值:
OK
$ ./redis-cli get mykey
Somevalue
如何添加值到list:
OK
$ ./redis-cli lpush mylist secondvalue
OK
$ ./redis-cli lpush mylist thirdvalue
OK
$ ./redis-cli lrange mylist 0 -1
1. thirdvalue
2. secondvalue
3. firstvalue
$ ./redis-cli rpop mylist
firstvalue
$ ./redis-cli lrange mylist 0 -1
1. thirdvalue
2. secondvalue
redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的 ab 工具).
====== SET ======
100007 requests completed in 0.88 seconds (译者注:100004 查询完成于 1.14 秒 )
50 parallel clients (译者注:50个并发客户端)
3 bytes payload (译者注:3字节有效载荷)
keep alive: 1 (译者注:保持1个连接)
58.50% < = 0 milliseconds(译者注:毫秒)
99.17% < = 1 milliseconds
99.58% < = 2 milliseconds
99.85% < = 3 milliseconds
99.90% < = 6 milliseconds
100.00% < = 9 milliseconds
114293.71 requests per second(译者注:每秒 114293.71 次查询)
Windows下测试并发客户端极限为60
linux平台Redis安装:
tar xvzf redis-2.0.4.tar.gz
cd redis-2.0.4
make
mkdir /home/redis
cp redis-server /home/redis
cp redis-benchmark /home/redis
cp redis-cli /home/redis
cp redis.conf /home/redis
cd /home/redis
启动
./redis-server redis.conf
进入命令交互模式,两种:
1: ./redis-cli
2: telnet 127.0.0.1 6379 (ip接端口)
=============================================================
配置文件参数说明 :
1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize no
2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis.pid
3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字
port 6379
4. 绑定的主机地址
bind 127.0.0.1
5.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 300
6. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel verbose
7. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null
logfile stdout
8. 设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
databases 16
9. 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
save <seconds> <changes>
Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
10. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes
11. 指定本地数据库文件名,默认值为dump.rdb
dbfilename dump.rdb
12. 指定本地数据库存放目录
dir ./
13. 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
slaveof <masterip> <masterport>
14. 当master服务设置了密码保护时,slav服务连接master的密码
masterauth <master-password>
15. 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
requirepass foobared
16. 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
maxclients 128
17. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区
maxmemory <bytes>
18. 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
appendonly no
19. 指定更新日志文件名,默认为appendonly.aof
appendfilename appendonly.aof
20. 指定更新日志条件,共有3个可选值:
no
:表示等操作系统进行数据缓存同步到磁盘(快)
always
:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec
:表示每秒同步一次(折衷,默认值)
appendfsync everysec
21. 指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制)
vm-enabled no
22. 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
vm-swap-file /tmp/redis.swap
23. 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0
vm-max-memory 0
24. Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来设定的,作者建议如果存储很多小对象,page大小最好设置为32或者64bytes;如果存储很大大对象,则可以使用更大的page,如果不 确定,就使用默认值
vm-page-size 32
25. 设置swap文件中的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。
vm-pages 134217728
26. 设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟。默认值为4
vm-max-threads 4
27. 设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启
glueoutputbuf yes
28. 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
29. 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)
activerehashing yes
30. 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
include /path/to/local.conf
1. Redis官方文档对VM的使用提出了一些建议: 当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大. 当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value. 最好使用linux ext3 等对稀疏文件支持比较好的文件系统保存你的swap文件. vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数.如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证. 2. 关于Redis新的存储模式diskstore(http://timyang.net/data/redis-diskstore),节选: 适合Web 2.0数据访问最佳的方式就是完全基于内存,比如用Memcached或者Redis snapshot方式。但是更多的业务场景是数据规模会超过RAM容量,因此有几种不同的设计模式。VM方式 : 将数据分页存放,由应用(如Redis)或者操作系统(如Varnish)将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中。应用实现VM缺点是代码逻辑复杂,如果业务上冷热数据边界并不分明,则换入换出代价太高,系统整体性能低。不少抢鲜的网友在微博上也反馈过使用VM种种不稳定情况。操作系统实现缺点在于 主要OS的VM换入换出是基于Page概念,比如OS VM1个Page是4K, 4K中只要还有一个元素即使只有1个字节被访问,这个页也不会被SWAP,换入也同样道理,读到一个字节可能会换入4K无用的内存。而Redis自己实现则可以达到控制换入的粒度。另外访问操作系统SWAP内存区域时block进程,也是导致Redis要自己实现VM原因之一。 磁盘方式: 所有的数据读写访问都是基于磁盘,由操作系统来只能的缓存访问的数据。由于现代操作系统都非常聪明,会将频繁访问的数据加入到内存中,因此应用并不需要过多特殊逻辑。MongoDB就是这种设计方式。这种方式也有一些已知的缺点,比如操作MMap写入磁盘由操作系统控制,操作系统先写哪里后写哪里应用并不知情,如果写入过程中发生了crash则数据一致性会存在问题。这个也是MongoDB饱受争议的单机Durability 问题硬盘存储+cache方式: 实际原理和mysql+memcache方式类似,只不过将两者功能合二为一到一个底层服务中,简化了调用。
在上面几种方式中,除去VM,antirez觉得MongoDB方式也不太适合,因此选择了disktore方式来实现新的磁盘存储,具体细节是1) 读操作,使用read through以及LRU方式。内存中不存在的数据从磁盘拉取并放入内存,内存中放不下的数据采用LRU淘汰。 2) 写操作,采用另外spawn一个线程单独处理,写线程通常是异步的,当然也可以把cache-flush-delay配置设成0,Redis尽量保证即时写入。但是在很多场合延迟写会有更好的性能,比如一些计数器用Redis存储,在短时间如果某个计数反复被修改,Redis只需要将最终的结果写入磁盘。这种做法作者叫per key persistence。由于写入会按key合并,因此和snapshot还是有差异,disk store并不能保证时间一致性。由于写操作是单线程,即使cache-flush-delay设成0,多个client同时写则需要排队等待,如果队列容量超过cache-max-memory,Redis设计会进入等待状态,造成调用方卡住。Google Group上有热心网友迅速完成了压力测试,当内存用完之后,set每秒处理速度从25k下降到10k再到后来几乎卡住。虽然通过增加cache-flush-delay可以提高相同key重复写入性能;通过增加cache-max-memory可以应对临时峰值写入。但是diskstore写入瓶颈最终还是在IO。 3) rdb 和新 diskstore 格式关系rdb是传统Redis内存方式的存储格式,diskstore是另外一种格式,那两者关系如何?
1.通过BGSAVE可以随时将diskstore格式另存为rdb格式,而且rdb格式还用于Redis复制以及不同存储方式之间的中间格式。
2.通过工具可以将rdb格式转换成diskstore格式。
=============================================================
相关链接:
Redis几个认识误区
Redis新的存储模式diskstore
Redis使用系列:配置文件篇
Redis在Windows下的使用
深入Redis,读redis-from-the-ground-up有感
国外:
http://code.google.com/p/redis/
http://blog.mjrusso.com/2010/10/17/redis-from-the-ground-up.html
http://antirez.com/post/redis-virtual-memory-story.html
http://code.google.com/p/redis/wiki/VirtualMemorySpecification
发表评论
-
Redis入门教程
2011-07-12 22:08 2170入门教程,仅供菜鸟。 ... -
Redis数据库介绍
2011-07-12 22:07 28231. Redis是什么 这个问题的结果影响了我们怎么用R ... -
redis-sharding – 一个 Redis Proxy【转】
2011-04-28 01:43 1656redis-sharding 是一个由perl写的 Redis ... -
redis 运维实际经验纪录之一【转】
2011-04-26 11:30 1189发表于 2010/05/25 由 ... -
1,250,000,000 Key/Value Pairs in Redis 2.0.0-rc3 on a 32GB Machine【转】
2011-04-26 11:28 915Posted on July 25, 20 ... -
200,000,000 Keys in Redis 2.0.0-rc3【转】
2011-04-26 11:27 982Posted on July 24, 20 ... -
Redis配置文件各项参数说明【转】
2011-04-26 11:00 1632最近一个项目用到Redis ... -
Redis配置主从服务器【转】
2011-04-26 10:31 1280redis配置主从服务器 R ... -
More Redis internals: Tracing a GET & SET【转】
2011-04-26 10:09 1869In my previous article , I too ... -
深入Redis内部-Redis 源码讲解【转】
2011-04-26 10:08 615Redis 作为 NoSQL 数据库的杰出代表,一直广受关注, ... -
redis安装配置及使用【转】
2011-04-26 09:03 15782011-03-27 20:41 http://cod ... -
Redis安装配置【转】
2011-04-26 09:02 2050http://bbs.linuxtone.org/thread ... -
闲聊Redis【转】
2011-04-26 09:00 1165Redis 是一个有趣 的项目,与其把它说成键值存储、键 ... -
redis知识点整理【转】
2011-04-25 22:40 1093xmind做的笔记,可惜只能截图 关键字: ... -
jedis线程池的代码【转】
2011-04-25 22:36 2810备忘:(本机i5的测试数据:redis线程执行时间是:2118 ... -
在多台服务器上简单实现Redis的数据主从复制【转】
2011-04-25 22:27 1223Redis的主从复制功能非常强大,一个mas ter可以拥有 ... -
Redis在Windows下的使用[转]
2011-04-25 22:24 1158Windows版的Redis可到此处下载,非官方版http:/ ... -
windows下redis和memcached的性能对比测试【转】
2011-04-25 22:19 1702在windows下测试了redis和memcached的性能, ... -
膜拜Redis【转】
2011-04-25 21:14 990膜拜Redis 2009年06月18 ...
相关推荐
本文将详细阐述如何在Windows和Linux操作系统上安装并配置Redis守护进程。 ## Windows上的Redis安装与配置 1. **下载Redis**:从GitHub的微软归档仓库(https://github.com/microsoftarchive/redis/releases)获取...
通常,".tar.gz"是Linux/Unix平台下常用的归档格式,而这里提到了"windows",可能意味着这个软件包已经被转换或编译为适合Windows环境的版本。 从标签"redis redis-session windows"我们可以推断出以下关键知识点:...
3. 在解压目录下打开命令行,运行 `redis-server.exe redis.windows.conf` 启动 Redis 服务。 4. 使用 `redis-server --service-install redis.windows.conf` 安装为系统服务,并用 `redis-server --service-start` ...
在Windows环境下,启动Redis服务通常通过命令行完成,例如使用`redis-server.exe`命令。此外,还可以利用图形界面管理工具如RedisInsight或RedisDesktopManager来更直观地管理和操作Redis实例。 总的来说,这个...
`.tar.gz`是一种常见的Linux/Unix下的文件打包和压缩格式,它由`.tar`(归档)和`.gz`(Gzip压缩)两部分组成。在Windows环境下,可以使用7-Zip或WinRAR等工具来处理这种格式的文件。解压后,你将得到一个名为`redis...
这些工具通常支持跨平台,可以在Windows、MacOS和Linux上使用。你可以根据自己的喜好和需求选择合适的连接工具。 在实际应用中,Redis作为数据库和缓存系统,它的功能远不止于此。例如,它支持多种数据结构(字符串...
该工具是用Java编写的,这意味着它具有跨平台的特性,可以在Windows、Linux、Mac OS等操作系统上运行。Java作为流行的后端开发语言,拥有广泛的开发者基础,使得这个工具能够被广大开发者所接受和使用。 `...
通常,".tar.gz"是一种在Unix/Linux系统中常见的归档压缩格式,而".zip"则更常用于Windows系统。这表明开发者考虑到了跨平台的兼容性,使得Windows用户也能方便地使用Redis Session Manager。 标签"redis"、"redis-...
对于Linux、macOS和Windows平台,都有相应的安装教程。 1. Linux:下载源码后,解压并编译安装,通过`make`和`make install`命令完成。 2. macOS:可以使用Homebrew包管理器,运行`brew install redis`。 3. ...
毕业设计python+django+mysql+redis多主题个人博客系统项目源码。...windows: django-gzip压缩主站,linux: nginx-gzip压缩全站 Rss / Atom 订阅 支持图床,后台上传图片可直链访问及调用 simpleui后台管理
在安装应用系统后,需要对系统进行一系列的调整,包括调整内存、端口,以及对SQL Server、Oracle、MySQL数据库初始化前的参数检测。防火墙的设置和产品默认使用端口的了解也是必要的步骤。 关于系统备份,手册详细...
基于python3.8 + django3.2.4 + mysql8 + redis + uwsgi + nginx 的一个多主题...windows: django-gzip压缩主站,linux: nginx-gzip压缩全站 Rss / Atom 订阅 支持图床,后台上传图片可直链访问及调用 simpleui后台管理
- 如果在安装过程中遇到 GitHub API 使用限制,可能需要提供 GitHub 账户登录信息,以便获取更高的 API 限额。 2. **通过归档文件安装** - 下载 Yii2.0 的归档文件。 - 解压缩到 Web 服务器的可访问目录。 - ...
1. **操作系统**:如Windows、Linux、macOS等,涵盖文件系统管理、命令行操作、用户权限、系统服务和更新等。 2. **编程语言**:如Python、Java、C++等,涉及语法、数据类型、控制结构、函数、类库和框架的使用。 ...