Redis 知识点归纳总结


本文主要是归纳总结 redis 的主要知识点及其操作。具体内容包括:

1.redis 数据操作

2.redis 高级操作

一、redis 数据操作

redis 是 key-value 的数据,所以每个数据都是一个键值对,键的类型是字符串。

值的类型分为五种:

· 字符串string
· 哈希hash
· 列表list
· 集合set
· 有序集合zset

有关数据操作的全部命令,可以查看中文网站

接下来逐个介绍操作各类型的命令:

字符串

string 是 redis 最基本的类型,最大能存储512MB数据。

string类型是二进制安全的,即可以为任何数据,比如数字、图片、序列化对象等

命令:

设置

1.设置键值:

SET ley value

2.设置键值以及过期时间,以秒为单位:

setex key seconds value

3.设置多个键值:

MSET key value [key value ...]

获取

1.根据键获取对应值,若不存在则返回 nil:

GET key

2.根据多个键获取多个值:

MGET key [key ...]

运算(值必须为数字)

1.将 key 对应的 value 加1:

INCR key

2.将key对应的value加整数

INCRBY key increment

3.将key对应的value减1

decr key

4.将key对应的value减整数

DECRBY key decrement

其它

1.追加值

APPEND key value

2.获取值长度

STRLEN key

hash

hash 用于给键存储对象,对象的格式为键值对

命令:

设置

1.设置单个属性:

HSET key field value

2.设置多个属性:

HMSET key field value [field value ...]

获取

1.获取一个属性的值:

HGET key field

2.获取多个属性的值:

HMGET key field [field ...]

3.获取所有属性和值:

HGETALL key

4.获取所有的属性

HKEYS key

5.返回包含属性的个数:

HLEN key

6.获取所有值:

HVALS key

其它

1.判断属性是否存在:

HEXISTS key field

2.删除属性及值:

HDEL key field [field ...]

3.返回值的字符串长度:

HSTRLEN key field

list

列表的元素类型为 string,并且列表按照插入顺序排序

列表是在头部或者尾部添加元素

命令:

设置

1.在头部插入数据:

LPUSH key value [value ...]

2.在尾部插入数据:

RPUSH key value [value ...]
**3.在一个元素的前 后插入新元素:**
LINSERT key BEFORE|AFTER pivot value

4.设置指定索引的元素值:

// 索引是基于0的下标
// 索引可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
LSET key index value

获取

1.移除并且返回 key 对应的 list 的第一个元素

LPOP key

2.移除并返回存于 key 的 list 的最后一个元素:

RPOP key

3.返回存储在 key 的列表里指定范围内的元素:

// start 和 end 偏移量都是基于0的下标
// 偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
LRANGE key start stop

其它

1.裁剪列表,改为原集合的一个子集:

start  end 偏移量都是基于0的下标
偏移量也可以是负数表示偏移量是从list尾部开始计数-1表示列表的最后一个元素
LTRIM key start stop

2.返回存储在 key 里的list的长度:

LLEN key

3.返回列表里索引对应的元素:

LINDEX key index

set

set 为无序集合,且其元素为string类型,元素具有唯一性,不重复。

命令:

设置

1.添加元素:

SADD key member [member ...]

获取

1.返回key集合所有的元素:

SMEMBERS key

2.返回集合元素个数:

SCARD key

其它

1.求多个集合的交集:

SINTER key [key ...]

2.求某集合与其它集合的差集:

SDIFF key [key ...]

3.求多个集合的合集:

SUNION key [key ...]

4.判断元素是否在集合中:

SISMEMBER key member

zset

zset ,sorted set,为有序集合

元素为string类型,具有唯一性,不重复

每个元素都会关联一个 double 类型的 score ,表示权重,通过权重将元素从小到大排序,元素的score可以相同

命令:

设置

1.添加

ZADD key score member [score member ...]

获取

1.返回指定范围内的元素:

ZRANGE key start stop

2.返回元素个数:

ZCARD key

3.返回有序集key中,score 值在 min 和 max 之间的成员:

ZCOUNT key min max

4.返回有序集key中,成员 member 的 score 值:

ZSCORE key member

键的命令

1.查找键,参数支持正则:

KEYS pattern

2.判断键是否存在,如果存在返回1,不存在返回0:

EXISTS key [key ...]

3.查看键对应的value的类型:

TYPE key

4.删除键及对应的值:

DEL key [key ...]

5.设置过期时间,以秒为单位:

// 创建时没有设置过期时间则一直存在,直到使用使用DEL移除
EXPIRE key seconds
// 查看有效时间,以秒为单位
TTL key

二、redis 高级操作

发布订阅

发布订阅是 redis 当中的一种数据自动推送的模式,利用该模式可以实现数据的自动更新。

发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅

订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的

发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑。

客户端发到频道的消息,将会被推送到所有订阅此频道的客户端,客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来

消息的格式

推送消息的格式包含三部分

part1:消息类型,包含三种类型:

· subscribe,表示订阅成功
· unsubscribe,表示取消订阅成功
· message,表示其它终端发布消息

如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量

如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道,当在Pub/Sub以外状态,客户端可以发出任何redis命令

如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容

命令:

订阅:

SUBSCRIBE 频道名称 [频道名称 ...]

取消订阅:

如果不写参数,表示取消所有订阅

UNSUBSCRIBE 频道名称 [频道名称 ...]

发布:

PUBLISH 频道 消息

主从配置

一个 master 可以拥有多个 slave ,一个 slave 又可以拥有多个 slave,如此下去,形成了强大的多级服务器集群架构

比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器

第一步:设置主服务器的配置

bind 192.168.1.10

第二步:设置从服务器的配置

注意:在slaveof后面写主机ip,再写端口,而且端口必须写

bind 192.168.1.11
slaveof 192.168.1.10 6379

第三步:主从数据共享

在master上写数据

set hello world

在slave上读数据

get hello