Redis入门 | 青训营

50 阅读5分钟

前言

Redis也是一个完全开源的数据库,遵守 BSD 协议,是一个高性能的 key-value 数据库。因为redis具有强劲的读写能力,我也是慕名来学。也希望给大家带来感悟。

NoSQL

Nosql = not only sql(不仅仅是SQL)

关系型数据库: 结构化的数据库,由行和列组成。

非关系新数据库: 没有固定的结构,同时它也可以做横向扩展。

NoSQL泛指非关系型数据库,与之前学过的关系型数据库(如MySQL,SQLserve等)不同的是没有固定的存储结构,也就意味着NoSQL数据库先天不是为了查询而设定,而是为了在高并发的环境下依然能够持续稳定提供数据存储服务。web2.0的大数据时代,传统的关系型数据库是无法支撑起高并发的环境,NoSQL这种拥有高吞吐量,低延时的数据结构在大数据环境下发展迅速,redis也是发展最快的一种数据库。

redis简介

Redis = Remote Dictionary Server,即远程字典服务。

是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

安装

懒得讲,上传送门:

www.runoob.com/redis/redis…

redis五大基本数据类型

String(字符串)

String字符串是最常用的数据类型,不仅仅是redis,各个语言都是最基本类型,因此,利用redis作为缓存,配合其它数据库作为存储层,利用redis支持高并发的特点,可以大大加快系统的读写速度、以及降低后端数据库的压力。

实例

redis 127.0.0.1:6379> SET runoobkey redis
OK
redis 127.0.0.1:6379> GET runoobkey
"redis"

在以上实例中我们使用了 SETGET 命令,键为 runoobkey

  • SET key value设置指定 key 的值。设置指定 key 的值。|
  • GET key 获取指定 key 的值。

List(列表)

列表是最简单的数据结构,按照插入的顺序排序,你可以从列表的头部(左边)或者尾部(右边)插入数据。

实例

redis 127.0.0.1:6379> LPUSH runoobkey redis
(integer) 1
redis 127.0.0.1:6379> LPUSH runoobkey mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH runoobkey mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE runoobkey 0 10

1) "mysql"
2) "mongodb"
3) "redis"

在以上实例中我们使用了 LPUSH 将三个值插入了名为 runoobkey 的列表当中。

  • RPOP key 移除列表的最后一个元素,返回值为移除的元素。
  • RPUSH key value1 [value2] 在列表中添加一个或多个值到列表尾部
  • LPUSH key value1 [value2] 将一个或多个值插入到列表头部
  • LPOP key 移出并获取列表的第一个元素

Hash(哈希)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

实例

127.0.0.1:6379>  HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
127.0.0.1:6379>  HGETALL runoobkey
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"

在以上实例中,我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 runoobkey 中。

  • HDEL key field1 [field2] 删除一个或多个哈希表字段
  • HMSET key field1 value1 [field2 value2] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
  • HGET key field 获取存储在哈希表中指定字段的值。
  • HGETALL key 获取在哈希表中指定 key 的所有字段和值

Set(集合)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 实例

redis 127.0.0.1:6379> SADD runoobkey redis
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mongodb
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 1
redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS runoobkey

1) "mysql"
2) "mongodb"
3) "redis"

在以上实例中我们通过 SADD 命令向名为 runoobkey 的集合插入的三个元素。

  • SADD key member1 [member2] 向集合添加一个或多个成员
  • SMEMBERS key 返回集合中的所有成员
  • SREM key member1 [member2] 移除集合中一个或多个成员

Sorted Set (有序集合)

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

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

有序集合的成员是唯一的,但分数(score)却可以重复。

redis 127.0.0.1:6379> ZADD runoobkey 1 redis
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 2 mongodb
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 0
redis 127.0.0.1:6379> ZADD runoobkey 4 mysql
(integer) 0
redis 127.0.0.1:6379> ZRANGE runoobkey 0 10 WITHSCORES

1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"

在以上实例中我们通过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。

  • ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
  • ZREM key member [member ...] 移除有序集合中的一个或多个成员
  • ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
  • ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合指定区间内的成员
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员