Redis 三大特点:

Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用; 

Redis相比许多键值数据存储系统有相对丰富的数据类型,不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储; 

Redis可以将数据复制到任意数量的从服务器中,支持数据的备份,即master-slave模式的数据备份;

 

Redis优点

异常快速 :是非常快的,每秒可以执行大约110000设置操作,81000个/每秒的读取操作。

支持丰富的数据类型 :支持最大多数开发人员已经知道如列表,集合,可排序集合,哈希等数据类型。

操作都是原子的 :所有 Redis 的操作都是原子,从而确保当两个客户同时访问 Redis 服务器得到的是更新后的值(最新值)。

MultiUtility工具 : Redis是一个多功能实用工具,可以在很多如:缓存,消息传递队列中使用(Redis原生支持发布/订阅),在应用程序中,如:Web应用程序会话,网站页面点击数等任何短暂的数据;

丰富的特性 : Redis还支持 publish/subscribe, 通知, key 过期等等特性;

 

Redis数据类型

Redis 支持5种数据类型:

字符串(String)

String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

String类型是二进制安全的。意思是Redis的String可以包含任何数据。比如jpg图片或者序列化的对象 。

String类型是Redis最基本的数据类型,一个键最大能存储512MB

redis 127.0.0.1:6379> SET name "yiibai"
OK
redis 127.0.0.1:6379> GET name
"yiibai"

 

哈希(Hash)

Redis Hash 是一个键值对集合。

Redis Hash是一个String类型的Field和Value的映射表,Hash特别适合用于存储对象。

redis 127.0.0.1:6379> HMSET user:1 username yiibai password yiibai points 200
OK
redis 127.0.0.1:6379> HGETALL user:1

1) "username"
2) "yiibai"
3) "password"
4) "yiibai"
5) "points"
6) "200"

在上面的例子中,哈希数据类型用于存储包含用户基本信息的用户对象。这里 HSET,HEXTALL 是 Redis 命令同时 user:1 也是一个键。

 

列表(List)

Redis 列表是简单的字符串列表,通过插入顺序排序。可以添加一个元素到 Redis 列表的头部或尾部。

redis 127.0.0.1:6379> lpush tutoriallist redis
(integer) 1
redis 127.0.0.1:6379> lpush tutoriallist mongodb
(integer) 2
redis 127.0.0.1:6379> lpush tutoriallist rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange tutoriallist 0 10

1) "rabitmq"
2) "mongodb"
3) "redis"

列表的最大长度为 232 - 1 个元素(4294967295,每个列表的元素超过四十亿)。

 

集合(Set)

Redis 集合是字符串的无序集合(Redis的Set是String类型的无序集合)。在 Redis 可以添加,删除和测试成员存在的时间复杂度为 O(1)。

 

sadd 命令

添加一个String元素到key对应的Set集合中,成功返回1, 如果元素以及在集合中返回0, key对应的Set不存在返回错误。

sadd key member


实例:

redis 127.0.0.1:6379> sadd tutoriallist redis
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist mongodb
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers tutoriallist

1) "rabitmq"
2) "mongodb"
3) "redis"

注:在上面的例子中 rabitmq 被添加两次,但由于它是只集合具有唯一特性。集合中的成员最大数量为 232 - 1(4294967295,每个集合有超过四十亿条记录)。

 

集合排序(zset/sorted set)

Redis zset 和 Set 一样也是String类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

 

zadd 命令

添加元素到集合,元素在集合中存在则更新对应score

zadd key score member

 

 实例

redis 127.0.0.1:6379> zadd tutoriallist 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000

1) "redis"
2) "mongodb"
3) "rabitmq"

 

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