Redis使用详细教程

Redis简介:
Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。
Redis有三个主要特点,使它优越于其它键值数据存储系统 。

  1. ​​​​Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。
  2. 与其它键值数据存储相比,Redis有一组相对丰富的数据类型。
  3. Redis可以将数据复制到任意数量的从机中。

 
Redis官方网网站是:http://www.redis.io/ 
 
Redis的优点:
  1. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
  2. 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
  3. 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
  4. 多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。

Redis与其他键值存储系统对比:
  1. Redis是键值数据库系统的不同进化路线,它的值可以包含更复杂的数据类型,可在这些数据类型上定义原子操作。
  2. Redis是一个内存数据库,但在磁盘数据库上是持久的,因此它代表了一个不同的权衡,在这种情况下,在不能大于存储器(内存)的数据集的限制下实现非常高的写和读速度。
  3. 内存数据库的另一个优点是,它与磁盘上的相同数据结构相比,复杂数据结构在内存中存储表示更容易操作。 因此,Redis可以做很少的内部复杂性。

 
Redis数据类型:
Redis支持5种数据类型。string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
 
String(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
实例:
redis 127.0.0.1:6379> SET key "value"
OK
redis 127.0.0.1:6379> GET key
"value"
在以上实例中我们使用了 Redis 的 SET 和 GET 命令。键为 key,对应的值为 value。

注意:一个键最大能存储512MB。
 
Hash(哈希) 通俗说就是MYSQL实体表
 
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
127.0.0.1:6379> HMSET user:1 username 51ask password 51ask points 200
OK
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "51ask"
3) "password"
4) "51ask"
5) "points"
6) "200"
以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中我们使用了 Redis HMSET, HGETALL 命令,user:1 为键值。

每个 hash 可以存储2的32次方-1键值对(40多亿)。
 
List(列表)
 
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
 
实例
redis 127.0.0.1:6379> lpush 51ask redis
(integer) 1
redis 127.0.0.1:6379> lpush 51ask mongodb
(integer) 2
redis 127.0.0.1:6379> lpush 51ask rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange 51ask 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>
列表最多可存储 2的32次方 - 1 元素 (4294967295, 每个列表可存储40多亿)。
 
Set(集合)
 
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sadd 命令
添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
sadd key member
实例
redis 127.0.0.1:6379> sadd 51ask redis
(integer) 1
redis 127.0.0.1:6379> sadd 51ask mongodb
(integer) 1
redis 127.0.0.1:6379> sadd 51ask rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd 51ask rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers 51ask

1) "rabitmq"
2) "mongodb"
3) "redis"
注意:以上实例中 rabitmq 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

集合中最大的成员数为 2的32次方 - 1(4294967295, 每个集合可存储40多亿个成员)。
 
zset(sorted set:有序集合)

 
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
 
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
zadd key score member 
实例
redis 127.0.0.1:6379> zadd 51ask 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd 51ask 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd 51ask 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd 51ask 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE 51ask 0 1000

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

0 个评论

要回复文章请先登录注册