码迷,mamicode.com
首页 > 其他好文 > 详细

redis

时间:2016-07-07 19:59:07      阅读:395      评论:0      收藏:0      [点我收藏+]

标签:redis


一、Overview of Redis                                       Redis的概述

The word Redis means REmote DIctionary Server               Redis的意思远程字典服务器

Initial release in 2009                                                             2009年首次发布

It is an advanced key-value store or a data structure  store  这是一种先进的key-value存储或数据结构存储(不仅能存储键值简单数据还能存储列表,字典)

Runs entirely in memory                                                        完全运行在内存

      All data is kept in memory                                                      所有数据都保存在内存中

      Quick data access since it is maintained in memory              快速访问数据因为保留在内存中

      Data can be backed up to disk periodically                            数据可以周期性地备份到磁盘

      Single threaded server                                                            单线程服务器

Extensible via Lua scripts                                                         通过Lua脚本扩展

Able to replicate data between servers                                   能够复制服务器之间的数据(主从模式借助于sentinel实现一定意义上的HA)

Clustering also available                                                          集群也可


   “Redis是一个开源的,BSD许可的,高级的键值缓存和存储它通常被称为数据结构服务器

可以包含字符串,哈希,列表,集合,整理台,位图和hyperloglogs“。


Redis是一个内存中,但是可以保存在磁盘中

1百万的小键 - >字符串值对使用100 MB内存

单线程 - 但CPU不应该是瓶颈

平均Linux系统可以提供每50万并发(失误没秒)

限制很可能在你的系统可用内存

    最大 232键


2、Redis的持久保存方式

 1)快照服务

          Data异步从内存转移到磁盘

 2)AOF(追加文件)

          每次修改操作被写入到文件中

          能通过重播操作重新创建数据存储

         在不中断服务,将重建作为AOF需要的命令的最短序列重建内存中当前的数据集


3、Redis和Memcached的不同

Redis的优势:

   丰富的(资料形态)操作

   Hashs, Lists, Sets, Sorted Sets, HyperLogLog 等

   內建replication及cluster

   就地更新(in-place update)操作

   支援持久化(磁盘)

   避免雪崩效应

Memcached的优势:

   多线程

   善用多核CPU

   更少的阻塞操作

   更少的内存开销

   更少的内存分配压力

   可能有更少的内存碎片


4、Redis 3.0

  2015年4月1日正式推出

  Redis Cluster

  新的 “ embedded string”

  LRU演算法的改进:

         预设随机取5个样本,插入并排序至一个pool,移除最佳者,如此反复,直到内存用量小于maxmemory的设定

         樣本5比先前的3多

        从局部最优趋向全局最优


5、三种存储系统

    RDBMS: Oracle,DB2,PostgreSQL,MySQL,SQL Server,...

    NoSQL:HBase,Memcached,MongoDB,Redis,Neo4j...

           4种流派:键-值存储,(Column Family)列族存储,(Documentation)文档存储,(Graph)图示存储

    NewSQL(原生支持分布式):Aerospike,FoundationDB,RethinkDB,...


6、Redis的组件

     C语言研发,作者,意大利人,官网:redis.io

redis-server:服务器端

redis-cli:客户端

         command line interface

redis-benchmark:压力测试工具

redis-check-dump & redis-check-aof:redis存储在磁盘上的文件检测工具

  

7、Redis的安装

Installation

Download, extract(解压) and compile(编译) Redis with:

$ wget http://download.redis.io/releases/redis-3.2.1.tar.gz

$ tar xzf redis-3.2.1.tar.gz

$ cd redis-3.2.1

$ make

The binaries that are now compiled are available in the src directory. Run Redis with:

这被编译的二进制文件是在src目录中

$ src/redis-server

You can interact with Redis using the built-in client: 您可以使用带有Redis的交互的内置客户端:

$ src/redis-cli

redis> set foo bar

OK

redis> get foo

"bar"


安装包可以在官网下载,然后编译安装,也可以在https://pkgs.org/查找rpm包安装

[root@BAIYU_179 ~]# yum install redis-3.2.1-2.el6.remi.x86_64.rpm 
Dependencies Resolved

=======================================================================================
 Package      Arch       Version              Repository                          Size
=======================================================================================
Installing:
 redis        x86_64     3.2.1-2.el6.remi     /redis-3.2.1-2.el6.remi.x86_64     2.1 M
Installing for dependencies:
 jemalloc     x86_64     3.6.0-1.el6          epel                               100 k
(内存分配工具)
Transaction Summary
=======================================================================================
Install       2 Package(s)


[root@BAIYU_179 ~]# rpm -ql redis
/etc/logrotate.d/redis
/etc/rc.d/init.d/redis
/etc/rc.d/init.d/redis-sentinel
/etc/redis-sentinel.conf
/etc/redis.conf
/etc/security/limits.d/95-redis.conf
/usr/bin/redis-benchmark
/usr/bin/redis-check-aof
/usr/bin/redis-check-rdb
/usr/bin/redis-cli
/usr/bin/redis-sentinel
/usr/bin/redis-server
/usr/bin/redis-shutdown
/usr/share/doc/redis-3.2.1

redis的配置文件:

[root@BAIYU_179 ~]# grep -v ‘^#\|^$‘ /etc/redis.conf       #修改后
bind 127.0.0.1 192.168.100.179
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16                                #可以使用多少个database库
save 900 1                                  #900秒内如果有1个键发生改变就做一次快照
save 300 10
save 60 10000                               #禁用持久 save ""
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis/

#slaveof <nasterip> <masterport>          #表明自己是谁的从服务器 主服务器的Ip  端口

slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100

appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes


8、redis的使用

1)数据结构及其常用的命令

Strings

    Caching, counters, realtime metrics…

Hashes

 “Object” storage…

Lists

    Logs, queues, message passing…

Sets

    Membership, tracking…

Ordered sets

      Leaderboards, activity feeds…


Strings

     help @string

                        SET

                        GET

                        EXISTS

                        Integers

                        DECR

                        INCR

127.0.0.1:6379> help set

  SET key value [EX seconds] [PX milliseconds] [NX|XX]
  summary: Set the string value of a key
  since: 1.0.0
  group: string

127.0.0.1:6379> 
127.0.0.1:6379> set disto centos
OK
127.0.0.1:6379> get disto
"centos"
127.0.0.1:6379> set disto fedora
OK
127.0.0.1:6379> get disto
"fedora"

127.0.0.1:6379> help append

  APPEND key value
  summary: Append a value to a key
  since: 2.0.0
  group: string
127.0.0.1:6379> append xj xiejun
(integer) 6
127.0.0.1:6379> append disto xiejun
(integer) 12
127.0.0.1:6379> get xj
"xiejun"
127.0.0.1:6379> get disto
"fedoraxiejun"

127.0.0.1:6379> help strlen

  STRLEN key
  summary: Get the length of the value stored in a key
  since: 2.2.0
  group: string
127.0.0.1:6379> strlen xj
(integer) 6
127.0.0.1:6379> strlen disto
(integer) 12





redis

标签:redis

原文地址:http://xiexiaojun.blog.51cto.com/2305291/1812409

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!