Redis介绍及实践

一、理论知识

1. Redis简介

Redis是一个key-value存储系统。和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、sets(集合)和zsets(有序集合)几种数据类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

2. Redis数据结构

redis目前提供五种数据类型:string,list,setzset(sorted set)和Hash

  • string是最简单的类型,你可以理解成与Memcached一模一个的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。
  • list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。
  • set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。
  • zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。
  • Hash数据类型允许用户用Redis存储对象类型,Hash数据类型的一个重要优点是,当你存储的数据对象只有很少几个key值时,数据存储的内存消耗会很小.

3. Redis数据存储

redis的存储分为内存存储、磁盘存储(数据快照)和append only file(AOF日志)文件三部分,配置文件中有三个参数对其进行配置。

save seconds updatessave配置,指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。

appendonly yes/no appendonly配置,指出是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中。

appendfsync no/always/everysecappendfsync配置,no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次。


二、Redist安装与配置

1. 安装

wget http://redis.googlecode.com/files/redis-2.4.6.tar.gz

tar –zxvf redis-2.4.6.tar.gz

#需要说明的事,redis的安装非常简单,已经有现成的Makefile文件,直接运行make命令即可。

make

make install

2. 可运行包结构

Redis 由四个可执行文件:redis-benchmarkredis-cliredis-serverredis-stat这四个文件,加上一个redis.conf就构成了整个redis的最终可用包。它们的作用如下:

  • redis-server:Redis服务器的daemon启动程序
  • redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
  • redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
  • redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况

3.Redis配置

下面是redis.conf的主要配置参数的意义:

  • daemonize:是否以后台daemon方式运行
  • pidfile:pid文件位置
  • port:监听的端口号
  • timeout:请求超时时间
  • loglevel:log信息级别
  • logfile:log文件位置
  • databases:开启数据库的数量
  • save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
  • rdbcompression:是否使用压缩
  • dbfilename:数据快照文件名(只是文件名,不包括目录)
  • dir:数据快照的保存目录(这个是目录)
  • appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
  • appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
  • slaveof <masterip> <masterport> :主从配置,在redis-slave上配置master的ip port,即可。

PS:切记,一定要设定maxmemmory,且配置大小要小于物理内存,留有足够的内存供系统使用。


三、Redis集群

redis支持master-slave的主从配置,配置方法是在从机的配置文件中指定slaveof参数为主机的ip和port即可

图示如下:

PS:为了两个Redis Server可以互访,需要注释掉bind 127.0.0.1

Redis服务端未实现shard,但Java客户端Jedis实现了

四、Redis操作

1. 服务操作

redis-server

src/redis-server redis.conf

启动Redist服务

redis-benchmark

redis-benchmark -h localhost -p 6379 -c 100 -n 100000
100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能

redis-cli

redis-cli shutdown  

关闭Redis服务

redis-cli  

连接到Redis服务

redis-cli save  

备份操作

redis-cli -h localhost -p 6380 monitor

监控host为localhost,端口为6380,redis的连接及读写操作

redis-cli -h localhost -p 6380 info

提供host为localhost,端口为6380,redis服务的统计信息

redis-stat

redis-stat host localhost port 6380 overview

实时打印出host为localhost,端口为6380,redis实例的总体信息


2. 客户端命令操作

web命令行模拟页面地址:

http://try.redis-db.com/

详细命令参考:

http://redisdoc.com/

部分命令如下:

Key(键)相关命令:

DEL key [key ...]

DUMP key

EXISTS key

EXPIRE key seconds

EXPIREAT key timestamp

String相关命令:

APPEND key value

BITCOUNT key [start] [end]

BITOP operation destkey key [key ...]

DECR key

DECRBY key decrement

Hash相关命令:

HDEL key field [field ...]

HEXISTS key field

HGET key field

HGETALL key

HINCRBY key field increment

List相关命令:

BLPOP key [key ...] timeout

BRPOP key [key ...] timeout

BRPOPLPUSH source destination timeout

LINDEX key index

LINSERT key BEFORE|AFTER pivot value

Set相关命令:

SADD key member [member ...]

SCARD key

SDIFF key [key ...]

SDIFFSTORE destination key [key ...]

SINTER key [key ...]

SortedSet相关命令:

ZADD key score member [[score member] [score member] ...]

ZCARD key

ZCOUNT key min max

ZINCRBY key increment member

ZRANGE key start stop [WITHSCORES]

Pub/Sub相关命令:

PSUBSCRIBE pattern [pattern ...]

PUBLISH channel message

PUBSUB <subcommand> [argument [argument ...]]

PUNSUBSCRIBE [pattern [pattern ...]]

SUBSCRIBE channel [channel ...]

Transaction相关命令:

DISCARD

EXEC

MULTI

UNWATCH

WATCH key [key ...]

Script相关命令:

EVAL script numkeys key [key ...] arg [arg ...]

EVALSHA sha1 numkeys key [key ...] arg [arg ...]

Connection相关命令:

AUTH password

ECHO message

Server相关命令:

BGREWRITEAOF

BGSAVE

HyperLogLog 相关命令:

PFADD key element [element ...]

PFCOUNT key [key ...]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面为该资源的树壮目录。可以先确认是否有需要的版本dll或exe再进行下载。 VS2013REDIST运行库 │ 1.bat │ ├─2052 │ vcredist_arm.exe │ vcredist_x64.exe │ vcredist_x86.exe │ ├─arm │ ├─Microsoft.VC120.CRT │ │ msvcp120.dll │ │ msvcr120.dll │ │ vccorlib120.dll │ │ │ ├─Microsoft.VC120.CXXAMP │ │ vcamp120.dll │ │ │ └─Microsoft.VC120.OPENMP │ vcomp120.dll │ ├─Debug_NonRedist │ ├─arm │ │ ├─Microsoft.VC120.DebugCRT │ │ │ msvcp120d.dll │ │ │ msvcr120d.dll │ │ │ vccorlib120d.dll │ │ │ │ │ ├─Microsoft.VC120.DebugCXXAMP │ │ │ vcamp120d.dll │ │ │ │ │ └─Microsoft.VC120.DebugOPENMP │ │ vcomp120d.dll │ │ │ ├─x64 │ │ ├─Microsoft.VC120.DebugCRT │ │ │ msvcp120d.dll │ │ │ msvcr120d.dll │ │ │ vccorlib120d.dll │ │ │ │ │ ├─Microsoft.VC120.DebugCXXAMP │ │ │ vcamp120d.dll │ │ │ │ │ ├─Microsoft.VC120.DebugMFC │ │ │ mfc120d.dll │ │ │ mfc120ud.dll │ │ │ mfcm120d.dll │ │ │ mfcm120ud.dll │ │ │ │ │ └─Microsoft.VC120.DebugOpenMP │ │ vcomp120d.dll │ │ │ └─x86 │ ├─Microsoft.VC120.DebugCRT │ │ msvcp120d.dll │ │ msvcr120d.dll │ │ vccorlib120d.dll │ │ │ ├─Microsoft.VC120.DebugCXXAMP │ │ vcamp120d.dll │ │ │ ├─Microsoft.VC120.DebugMFC │ │ mfc120d.dll │ │ mfc120ud.dll │ │ mfcm120d.dll │ │ mfcm120ud.dll │ │ │ └─Microsoft.VC120.DebugOpenMP │ vcomp120d.dll │ ├─GraphicsDbgRedist │ ├─ARM │ │ │ VsGraphicsHelper.dll │ │ │ │ │ └─2052 │ │ VsGraphicsResources.dll │ │ │ ├─X64 │ │ │ VsGraphicsHelper.dll │ │ │ │ │ └─2052 │ │ VsGraphicsResources.dll │ │ │ └─X86 │ │ VsGraphicsHelper.dll │ │ │ └─2052 │ VsGraphicsResources.dll │ ├─x64 │ ├
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值