ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:160.53KB ,
资源ID:12277469      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12277469.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(redis 学习笔记.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

redis 学习笔记.docx

1、redis 学习笔记RedisLinux为:Centos 5.41、安装wget tar zxvf redis-2.0.4.tar.gzcd redis-2.0.4 makemake完后 redis-2.0.4目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli安装成功2、启动服务./redis-server也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动./redis-server redis.conf redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。启动redis服务进程后,就可以使用测试客

2、户端程序redis-cli和redis服务交互了注意启动的时候,会出现WARNING overcommit_memory is set to 0! Background save may fail underlow memory condition. To fix this issue add vm.overcommit_memory = 1 to /etc/sysctl.conf and6020 10 Aug 20:58:21 * The server is now ready to accept connections on port 63796020 10 Aug 20:58:21 -

3、0 clients connected (0 slaves), 533432 bytes in use6020 10 Aug 20:58:30 - 0 clients connected (0 slaves), 533432 bytes in use由于默认配置是连接到本机的 这时候你要修改配置文件的ip地址连接你服务器啊(可以不绑定默认是127.0.0.1)还有就是执行:sysctl vm.overcommit_memory=1(每次启动的时候都要设置)记得重启啊:reboot3、Set和get值注意此步骤必须在你的解压目录啊./redis-cli然后出现:redisSet值:set key

4、 value 如:redis set name ajunOKGet值:get key 如:redis get nameajun一次set多个key和获得多个keyredis mset k1 2 k2 3OKredis mget k1 k21. 22. 3成功4、对key的操作详细请参见:5、数据类型参见:6、排序SORT key BY pattern LIMIT start count GET pattern ASC|DESC ALPHA STORE dstkey这个是最简单的情况,没有任何选项就是简单的对集合自身元素排序并返回排序结果.下面给个例子redis lpush ml 12(inte

5、ger) 1redis lpush ml 11(integer) 2redis lpush ml 23(integer) 3redis lpush ml 13(integer) 4redis sort ml1. 112. 123. 134. 23(2)ASC|DESC ALPHAsort默认的排序方式(asc)是从小到大排的,当然也可以按照逆序或者按字符顺序排。逆序可以加上desc选项,想按字母顺序排可以加alpha选项,当然alpha可以和desc一起用。下面是个按字母顺序排的例子redis lpush mylist baidu(integer) 1redis lpush mylist he

6、llo(integer) 2redis lpush mylist xhan(integer) 3redis lpush mylist soso(integer) 4redis sort mylist1. soso2. xhan3. hello4. baiduredis sort mylist alpha1. baidu2. hello3. soso4. xhanredis sort mylist desc alpha1. xhan2. soso3. hello4. baidu(3)BY pattern 除了可以按集合元素自身值排序外,还可以将集合元素内容按照给定pattern组合成新的key,

7、并按照新key中对应的内容进行排序。下面的例子接着使用第一个例子中的ml集合做演示:redis set name11 nihaoOKredis set name12 woOKredis set name13 shiOKredis set name23 lalaOKredis sort ml by name* 1. 132. 233. 114. 12*代表了ml中的元素值,所以这个排序是按照name12 name13 name23 name23这四个key对应值排序的,当然返回的还是排序后ml集合中的元素(4)GET pattern 上面的例子都是返回的ml集合中的元素。我们也可以通过get选项

8、去获取指定pattern作为新key对应的值。看个组合起来的例子redis sort ml by name* get name* alpha1. lala2. nihao3. shi4. wo这 次返回的就不在是ml中的元素了,而是name12 name13 name23 name23对应的值。当然排序是按照name12 name13 name23 name23值并根据字母顺序排的。另外get选项可以有多个。看例子(#特殊符号引用的是原始集合也就是ml)redis sort ml by name* get name* get # alpha1. lala2. 233. nihao4. 115.

9、 shi6. 137. wo8. 12最后在还有一个引用hash类型字段的特殊字符-,下面是例子redis hset user1 name hanjie(integer) 1redis hset user11 name hanjie(integer) 1redis hset user12 name 86(integer) 1redis hset user13 name lxl(integer) 1redis sort ml get user*-name1. hanjie2. 863. lxl4. (nil)很容易理解,注意当对应的user23不存在时候返回的是nil(5) LIMIT star

10、t count 上面例子返回结果都是全部。limit选项可以限定返回结果的数量。例子redis sort ml get name* limit 1 21. wo2. shistart下标是从0开始的,这里的limit选项意思是从第二个元素开始获取2个(6)STORE dstkey 如果对集合经常按照固定的模式去排序,那么把排序结果缓存起来会减少不少cpu开销.使用store选项可以将排序内容保存到指定key中。保存的类型是listredis sort ml get name* limit 1 2 store cl(integer) 2redis type cllistredis lrange

11、cl 0 -11. wo2. shi功能介绍完后,再讨论下关于排序的一些问题。如果我们有多个redis server的话,不同的key可能存在于不同的server上。比如name12 name13 name23 name23,很有可能分别在四个不同的server上存贮着。这种情况会对排序性能造成很大的影响。redis作者在他的blog上提到了这个问题的解 决办法,就是通过key tag将需要排序的key都放到同一个server上 。由于具体决定哪个key存在哪个服务器上一般都是在client端hash的办法来做的。我们可以通过只对key的部分进行hash.举个例子假如我们 的client如果发

12、现key中包含。那么只对key中包含的内容进行hash。我们将四个name相关的key,都这样命名name12 name13 name23 name23,于是client 程序就会把他们都放到同一server上。不知道jredis实现了没。 还有一个问题也比较严重。如果要sort的集合非常大的话排序就会消耗很长时间。由于redis单线程的,所以长时间的排序操作会阻塞其他client的 请求。解决办法是通过主从复制机制将数据复制到多个slave上。然后我们只在slave上做排序操作。并进可能的对排序结果缓存。另外就是一个方案是就 是采用sorted set对需要按某个顺序访问的集合建立索引。7、

13、Redis事物五 redis-pipeline-网上资料CentOS 下 Redis 2.2 安装配置详解2011-07-27 12:25一. 关于 RedisRedis 是一种高级 key-value 数据库。它跟 memcached 类似,不过数据可以持久化,而且支持的数据类型很丰富。它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数 据库和键值数据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序 (SORT)等高级功能,在实现INCR,SETNX等功能的时候,保证了

14、其操作的原子性,除此以外,还支持主从复制等功能。Redis可以被看成是一个 数据结构服务器。Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。官方网站: http:/redis.io/PPT介绍: 二. 安装 RedisRedis的代码遵循ANSI-C编写,可以在所有POSIX系统(如Linux, *BSD, Mac OS X, Solaris等)上安装运行。而且Redis并不依赖任何非标准库,也没有编译参数必需添加。编译安装Redis

15、,我们唯一需要的就是make。1. 下载redis最新版本2.2.12cd /usr/local/srcwget 2. 编译安装redistar zxvf redis-2.2.12.tar.gzcd redis-2.2.12makemake命令执行完成后,会在当前目录下生成4个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-stat,它们的作用如下:redis-server:Redis服务器的daemon启动程序redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作redis-benchmar

16、k:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况3. 建立Redis目录(建议,非必需)执行以下命令建立相关目录并拷贝相关文件至目录中:sudo -smkdir -p /usr/local/redis/binmkdir -p /usr/local/redis/etcmkdir -p /usr/local/redis/varcp redis-server redis-cli redis-benchmark redis-stat /usr/local/redis/bin/cp redis

17、.conf /usr/local/redis/etc/建立Redis目录,只是为了将Redis相关的资源更好的统一管理。你也可以使用 make install安装在系统默认目录三. 配置 Redis成 功安装Redis后,直接执行redis-server即可运行Redis,此时它是按照默认配置来运行的(默认配置不是后台运行)。如果我们希望 Redis按我们的要求运行,则需要修改配置文件,Redis的配置文件就是上面第二个cp操作的redis.conf文件,目前它被我们拷贝到了 /usr/local/redis/etc/目录下。修改它就可以配置redis server了。1.redis.conf

18、 配置参数:#是否作为守护进程运行daemonize yes#如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pidpidfile redis.pid#绑定主机IP,默认值为127.0.0.1#bind 127.0.0.1#Redis默认监听端口port 6379#客户端闲置多少秒后,断开连接,默认为300(秒)timeout 300#日志记录等级,有4个可选值,debug,verbose(默认值),notice,warningloglevel verbose#指定日志输出的文件名,默认值为stdout,也可设为/dev/null屏蔽日志logfile stdout#

19、可用数据库数,默认值为16,默认数据库为0databases 16#保存数据到disk的策略#当有一条Keys数据被改变是,900秒刷新到disk一次save 900 1#当有10条Keys数据被改变时,300秒刷新到disk一次save 300 10#当有1w条keys数据被改变时,60秒刷新到disk一次save 60 10000#当dump .rdb数据库的时候是否压缩数据对象rdbcompression yes#本地数据库文件名,默认值为dump.rdbdbfilename dump.rdb#本地数据库存放路径,默认值为 ./dir /usr/local/redis/var/# Rep

20、lication #Redis的复制配置# slaveof 当本机为从服务时,设置主服务的IP及端口# masterauth 当本机为从服务时,设置主服务的连接密码#连接密码# requirepass foobared#最大客户端连接数,默认不限制# maxclients 128#最大内存使用设置,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。# maxmemory #是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所

21、以有的数据会在一段时间内只存在于内存中。默认值为noappendonly no#更新日志文件名,默认值为appendonly.aof#appendfilename#更新日志条件,共有3个可选值。no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次(默认值)。# appendfsync alwaysappendfsync everysec# appendfsync no# VIRTUAL MEMORY #是否开启VM功能,默认值为novm-enabled no# vm-enabled yes#虚拟内存文件路

22、径,默认值为/tmp/redis.swap,不可多个Redis实例共享vm-swap-file logs/redis.swap# 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的 (Redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0。vm-max-memory 0vm-page-size 32vm-pages 134217728vm-max-threads 4# ADVANCED CONFIG #glueoutputbuf yeshash

23、-max-zipmap-entries 64hash-max-zipmap-value 512#是否重置Hash表activerehashing yes注意:Redis官方文档对VM的使用提出了一些建议:* 当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.* 当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value.* 最好使用linux ext3 等对稀疏文件支持比较好的文件系统保存你的swap文件.* vm-max-threads这个参数,可以设置访问swap文件的线程数

24、,设置最好不要超过机器的核数.如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.2. 调整系统内核参数如果内存情况比较紧张的话,需要设定内核参数: echo 1 /proc/sys/vm/overcommit_memory这里说一下这个配置的含义:/proc/sys/vm/overcommit_memory该文件指定了内核针对内存分配的策略,其值可以是0、1、2。0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。1,表示内核允许分配所有的物理内存,而

25、不管当前的内存状态如何。2,表示内核允许分配超过所有物理内存和交换空间总和的内存Redis 在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候 也要同样分配8G的内存给child, 如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)四. 运行 Redis1. 运行服务/usr/local/redis/bin/redis-server /usr/local/redis

26、/etc/redis.conf即可在后台启动redis服务,确认运行了之后,可以用redis-benchmark命令测试看看,还可以通过redis-cli命令实际操作一下,比如:/usr/local/redis/bin/redis-cli set foo barOK/usr/local/redis/bin/redis-cli get foobar2. 关闭服务redis-cli shutdown如果端口变化可以指定端口:redis-cli -p 6380 shutdown3. 保存/备份数据备份可以通过定期备份该文件实现。因为redis是异步写入磁盘的,如果要让内存中的数据马上写入硬盘可以执行

27、如下命令:redis-cli save 或者 redis-cli -p 6380 save(指定端口)注意,以上部署操作需要具备一定的权限,比如复制和设定内核参数等。执行redis-benchmark命令时也会将内存数据写入硬盘。4. 同步机制redis实现的同步机制相对简单,缺少同步机制常见的check point和校验机制。在 运行时,如果master - slave同步请求转发被丢弃, slave将无法恢复该请求的相关信息,直到slave重启时从master全量加载数据时才能修复。因此,建议使用redis尽量利用其 key/value和value支持多种类型的特性,存储一些相对不重要的数

28、据。后台启动redis服务,这时你通过telnet 127.0.0.1 6379即可连接到你的redis服务。启动服务器./redis-server或$redis-server/etc/redis.conf查看是否成功启动$ps-ef|grepredis或./redis-cliping网上资料1Redis可存储的数据类型1.1keysredis本质上一个key-value db,所以我们首先来看看他的key.首先key也是字符串类型,但是key中不能包括边界字符由于key不是binary safe的字符串,所以像my key和mykeyn这样包含空格和换行的key是不允许的顺便说一下在redis内部并不限制使用binary字符,这是redis协议限制的。rn在协议格式中会作为特殊字符。redis 1.2以后的协议中部分命令已经开始使用新的协议格式了(比如MSET)。总之目前还是把包含边界字符当成非法的key吧,免得被bug纠缠。 另外关于key的一个格式约定介

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1