`

redis-文摘

阅读更多

牛逼文章:

http://lib.csdn.net/base/redis/structure

https://www.zhihu.com/question/21419897

 

1、http://www.yiibai.com/redis/redis_quick_guide.html

2、http://redis.io/commands

3、http://www.redis.cn/

 

 http://blog.csdn.net/it_man/article/details/9730559



4、memcached
https://github.com/memcached/memcached/wiki/Performance#it-should-respond-quickly
5、 redis 配置 http://blog.csdn.net/zhiguozhu/article/details/50517527

6、redis 性能测试 

http://www.runoob.com/redis/redis-benchmarks.html

 

配置:

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

 

 

 

命令:

以下所有的命令将()替换成空格执行,例如set命令,set a a

1、连接操作相关的命令

  • quit:关闭连接(connection)
  • auth:简单密码认证

2、对value操作的命令

  • exists(key):确认一个key是否存在
  • del(key):删除一个key
  • type(key):返回值的类型
  • keys(pattern):返回满足给定pattern的所有key
  • randomkey:随机返回key空间的一个key
  • rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key
  • dbsize:返回当前数据库中key的数目
  • expire:设定一个key的活动时间(s)
  • ttl:获得一个key的活动时间
  • select(index):按索引查询
  • move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库
  • flushdb:删除当前选择数据库中的所有key
  • flushall:删除所有数据库中的所有key

3、对String操作的命令

  • set(key, value):给数据库中名称为key的string赋予值value
  • get(key):返回数据库中名称为key的string的value
  • getset(key, value):给名称为key的string赋予上一次的value
  • mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1,key2…)的value
  • setnx(key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为value
  • setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time
  • mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key i的string赋值value i
  • msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,则向库中添加string,名称key i赋值为value i
  • incr(key):名称为key的string增1操作
  • incrby(key, integer):名称为key的string增加integer
  • decr(key):名称为key的string减1操作
  • decrby(key, integer):名称为key的string减少integer
  • append(key, value):名称为key的string的值附加value
  • substr(key, start, end):返回名称为key的string的value的子串

4、对List操作的命令

  • rpush(key, value):在名称为key的list尾添加一个值为value的元素
  • lpush(key, value):在名称为key的list头添加一个值为value的 元素
  • llen(key):返回名称为key的list的长度
  • lrange(key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始,下同)
  • ltrim(key, start, end):截取名称为key的list,保留start至end之间的元素
  • lindex(key, index):返回名称为key的list中index位置的元素
  • lset(key, index, value):给名称为key的list中index位置的元素赋值为value
  • lrem(key, count, value):删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。 lpop(key):返回并删除名称为key的list中的首元素 rpop(key):返回并删除名称为key的list中的尾元素 blpop(key1, key2,… key N, timeout):lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作。
  • brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。
  • rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

5、对Set操作的命令

  • sadd(key, member):向名称为key的set中添加元素member
  • srem(key, member) :删除名称为key的set中的元素member
  • spop(key) :随机返回并删除名称为key的set中一个元素
  • smove(srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合
  • scard(key) :返回名称为key的set的基数
  • sismember(key, member) :测试member是否是名称为key的set的元素
  • sinter(key1, key2,…key N) :求交集
  • sinterstore(dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合
  • sunion(key1, key2,…key N) :求并集
  • sunionstore(dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合
  • sdiff(key1, key2,…key N) :求差集
  • sdiffstore(dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合
  • smembers(key) :返回名称为key的set的所有元素
  • srandmember(key) :随机返回名称为key的set的一个元素

6、对zset(sorted set)操作的命令

  • zadd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
  • zrem(key, member) :删除名称为key的zset中的元素member
  • zincrby(key, increment, member) :如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
  • zrank(key, member) :返回名称为key的zset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”
  • zrevrank(key, member) :返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”
  • zrange(key, start, end):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
  • zrevrange(key, start, end):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素
  • zrangebyscore(key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素 zcard(key):返回名称为key的zset的基数 zscore(key, element):返回名称为key的zset中元素element的score zremrangebyrank(key, min, max):删除名称为key的zset中rank >= min且rank <= max的所有元素 zremrangebyscore(key, min, max) :删除名称为key的zset中score >= min且score <= max的所有元素
  • zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

7、对Hash操作的命令

  • hset(key, field, value):向名称为key的hash中添加元素field<--->value
  • hget(key, field):返回名称为key的hash中field对应的value
  • hmget(key, field1, …,field N):返回名称为key的hash中field i对应的value
  • hmset(key, field1, value1,…,field N, value N):向名称为key的hash中添加元素field i<--->value i
  • hincrby(key, field, integer):将名称为key的hash中field的value增加integer
  • hexists(key, field):名称为key的hash中是否存在键为field的域
  • hdel(key, field):删除名称为key的hash中键为field的域
  • hlen(key):返回名称为key的hash中元素个数
  • hkeys(key):返回名称为key的hash中所有键
  • hvals(key):返回名称为key的hash中所有键对应的value
  • hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

8、持久化

  • save:将数据同步保存到磁盘
  • bgsave:将数据异步保存到磁盘
  • lastsave:返回上次成功将数据保存到磁盘的Unix时戳
  • shundown:将数据同步保存到磁盘,然后关闭服务

9、远程服务控制

  • info:提供服务器的信息和统计
  • monitor:实时转储收到的请求
  • slaveof:改变复制策略设置
  • config:在运行时配置Redis服务器
0
2
分享到:
评论

相关推荐

    程序员文摘第74期-精选最有价值的文章

    程序员文摘第74期 本期程序员文摘涵盖了多个领域,包括云原生、开发与运维、网络空间安全、IoT、微服务、安全、运维、开发工具、人工智能、大数据、云计算等领域,共收录了20篇文章,以下是对每篇文章的知识点总结...

    程序员文摘第54期-精选最有价值的文章

    - SpringCache与Redis整合:介绍了如何快速上手配置SpringCache来利用Redis作为缓存,提升应用性能。 - Python切片理解:解析了Python中不同形式的切片操作,如`[-1][:-1][::-1][n::-1][::0][⋯ 0][⋯ ::-1]`,...

    程序员文摘第53期-精选最有价值的文章

    - `SpringCache整合Redis`:SpringCache是Spring框架中的缓存抽象,整合Redis可以实现高效的分布式缓存,提高应用程序性能。 - `Python切片理解`:Python中的切片操作,如`[-1][:-1][::-1]`等,用于灵活地访问序列...

    程序员文摘第52期-精选最有价值的文章

    以上就是本期《程序员文摘》第52期的部分精彩内容,涵盖了云原生、开发与运维、后端、网络空间安全、IoT、微服务、开发工具、人工智能、数据库、云平台、大数据、云计算等多个IT领域的知识点。这些文章和教程为...

    程序员文摘第72期-精选最有价值的文章

    * SpringCache整合Redis做缓存使用:讨论了SpringCache与Redis的整合方法,帮助读者实现高效的缓存机制。 网络空间安全 * Burpsuite介绍及2022.8.2版本超详细安装教程:介绍了Burpsuite的使用方法和安装过程,帮助...

    程序员文摘第21期-精选最有价值的文章

    在本文摘中,我们涉及了多个IT领域的知识点,包括云原生、开发与运维、后端...以上就是程序员文摘第21期中的主要知识点,涵盖了软件开发的多个方面,从基础工具的安装到高级应用的实践,为程序员提供了丰富的学习资源。

    程序员文摘第71期-精选最有价值的文章

    程序员文摘第71期精选最有价值的文章 本期程序员文摘涵盖了云原生、开发与运维、后端、网络空间安全、IoT、微服务、安全、运维、开发工具、人工智能、大数据、云计算等多个领域。本文将从这些领域中挑选出一些关键...

    程序员文摘第77期-精选最有价值的文章

    程序员文摘第77期-精选最有价值的文章 以下是从给定的文件中提取的知识点: 云原生 * Docker的安装:介绍了离线安装和在线安装Docker的步骤,并提供了详细的安装命令和步骤。 开发与运维 * Perl字符串处理:...

    程序员文摘第76期-精选最有价值的文章

    * SpringCache整合Redis做缓存使用:本文介绍了如何使用SpringCache框架将Redis作为缓存来提高系统性能。 * Python中的列表索引:本文讨论了Python语言中列表索引的使用方法和实践经验,包括负索引、切片、步长等...

    程序员文摘第73期-精选最有价值的文章

    程序员文摘第73期-精选最有价值的文章 本期资源摘要涵盖了云原生、开发与运维、后端、网络空间安全、IoT、微服务、安全、运维、开发工具、人工智能、大数据、云计算等领域的知识点,总计20余个知识点,涉及Perl、...

    程序员文摘第69期-精选最有价值的文章

    程序员文摘第69期精选最有价值的文章 该资源摘要信息涵盖了广泛的IT知识领域,涉及云原生、Docker、Perl、Python、SpringCache、Redis、 Burpsuite、网络空间安全、微服务、IntelliJ IDEA、OpenCore、Rust、人工...

    程序员文摘第45期-精选最有价值的文章

    在本期的《程序员文摘》中,我们涵盖了多个IT领域的精彩文章和教程,包括云原生、开发与运维、后端、网络安全、IoT、微服务、开发工具、人工智能、数据库、云平台、大数据和云计算等。以下是这些文章中涉及的知识点...

    PHP精华文摘

    - 缓存技术:如APC、Memcached、Redis提升动态内容生成速度。 - 代码优化:避免冗余计算,合理使用缓存,减少数据库查询。 通过"PHP精华文摘"的CHM文件,读者可以系统地学习这些知识,逐步成为PHP开发的专家。...

    程序员文摘第56期-精选最有价值的文章

    - SpringCache整合Redis:SpringCache是一个Java缓存抽象层,可以与Redis这样的分布式缓存系统集成,提高应用性能。 4. **Python编程**: - Python切片理解:Python中的切片操作如`[-1][:-1][::-1][n::-1][::0]...

    程序员文摘第25期-精选最有价值的文章

    在本文摘中,我们看到了一系列关于编程...以上是程序员文摘第25期中涉及的部分技术主题的详细解释,涵盖了从基础的编程语言特性到高级的网络安全和云计算实践。这些内容对于提升程序员的专业技能和知识广度非常有帮助。

    程序员文摘第27期-精选最有价值的文章

    例如,`SpringCache` 可用于整合 Redis 做缓存,提高应用性能;`ssh 实现秘钥登陆` 提供了更安全的远程访问方式;`Nginx 高级模块` 可以扩展 Web 服务器的功能;而 `OpenCore 黑苹果安装教程` 则是针对 macOS 操作...

    程序员文摘第55期-精选最有价值的文章

    SpringCache 是 Spring 提供的一个缓存抽象层,可以轻松地与其他缓存系统集成,如 Redis。通过配置和简单注解,可以快速实现缓存功能,提高应用性能。 【Python切片操作】 Python 的切片操作允许我们访问列表、字符...

    程序员文摘第59期-精选最有价值的文章

    整合Redis作为缓存存储,可以提高数据访问速度并降低数据库压力。SpringBoot 3和Spring 6是Spring框架的最新版本,IntelliJ IDEA的更新通常会支持这些新版本,以提供更好的开发体验。 4. **网络空间安全**:Burp ...

    Python库资源大全

    【Python库资源大全】这篇文摘提供了一个详尽的Python框架、库和工具的清单,主要涵盖算法与设计模式、构建工具、缓存、代码分析、命令行工具等多个领域,适用于机器学习、深度学习和量化投资等场景。下面将详细讨论...

Global site tag (gtag.js) - Google Analytics