2019-05-24笔记:redis的安装及使用

本文详细介绍了Redis的安装步骤,包括从官网和GitHub下载、安装配置,以及常用配置项的解析。接着,讲解了Redis的数据类型如String、Hash、List、Set和Sorted Set,并列出各种类型的操作命令。此外,还涵盖了Redis的状态返回值、事务处理和连接操作,以及PHP操作Redis的两种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装

redis官网:https://redis.io/

redis中文网:http://www.redis.cn/

redis GigHub地址:https://github.com/antirez/redis

下载软件包并解压

wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar -xzvf redis-5.0.4.tar.gz

  

安装

# PREFIX 指定安装目录
make PREFIX=/lamp/redis/ install

  

复制 redis.conf 到安装目录下

cp redis.conf /lamp/redis/

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

修改 redis.conf 配置文件

daemonize 的值改为 yes,表示以守护进程的方式启动

二、常用配置

port             6379                           默认端口

bind            127.0.0.1                    默认绑定的主机地址

timeout       0                                 当客户端闲置多久后关闭链接,0代表未启动

loglevel        notice                         日志的记录级别

                    debug                         很详细的信息,适合开发和测试

                    verbose                      包含很多不太有用的信息

                    notice                          比较适合生产环境

                    warning                       警告信息

logfile          stdout                          日志的记录方式,默认为标准输出

database     16                                默认数据库的数量为16个

save      <seconds> <changes>      多少秒内有多少次改变将其同步到磁盘的数据文件

save      900              1                     900秒内1次改变

save      300              10

save      60                 100

rdbcompression   yes                         存储本地数据库时是否启用压缩,默认为 yes

dbfilename           dump.rdb                指定数据库文件名,默认为 dump.rdb

dir                         ./                             指定本地数据库的存放目录,默认是当前目录

三、数据类型

String:字符串

string 是 redis 最基本的类型,一个 key 对应一个 value。

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

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

Hash:哈希

Redis hash 是一个键值(key=>value)对集合。

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

List:列表

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

Set:集合

Redis的Set是string类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

zset:有序集合

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

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

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

四、状态返回值

状态回复

  

  

错误回复:错误回复以 error 开头

  

整数回复

  

字符串回复

  

空的回复

  

多行字符串回复

  

五、redis 操作

1.key 操作

KEYS:查找所有符合给定模式 pattern 的 key

  ​​​​​

EXISTS:检查给定 key 是否存在

  

TYPE:返回 key 所储存的值的类型

  

EXPIRE:以秒设置 key 的过期时间 & TTL:以秒为单位返回 key 的剩余过期时间

  

TTL补充:当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。

PEXPIRE:以毫秒为单位设置 key 的生存时间 & PTTL:以毫秒为单位返回 key 的剩余过期时间

  

PTTL补充:当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。

EXPIREAT:以 UNIX 时间戳格式设置 key 的过期时间

  

PEXPIREAT:以 UNIX 时间戳格式设置 key 的过期时间,以毫秒计

  

PERSIST:移除给定 key 的过期时间,使得 key 永不过期

  

DEL:删除已存在的键。不存在的 key 会被忽略。

  

RANDOMKEY:从当前数据库中随机返回一个 key

  

RENAME:修改 key 的名称

  

  

RENAMENX:在新的 key 不存在时修改 key 的名称

  

DUMP:序列化给定 key ,并返回被序列化的值

  

MOVE:将当前数据库的 key 移动到给定的数据库 db 当中

  

2.string 操作

SET:设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。

  

  

EX seconds:设置 key 的过期时间 & PX milliseconds:以毫秒形式设置过期时间

  

NX:只有 key 不存在时才可以设置 & XX:只有 key 存在时才可以设置

  

GET:获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。

  

GETRANGE:获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。

  

GETSET:设置指定 key 的值,并返回 key 的旧值。

  

当 key 没有旧值时,即 key 不存在时,返回 nil 

  

MGET:回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 

  

SETEX:为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

  

SETNX:在指定的 key 不存在时,为 key 设置指定的值

  

SETRANGE:指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。

  

STRLEN:获取指定 key 所储存的字符串值的长度

  

MSET:同时设置一个或多个 key-value 对

  

MSETNX:用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对

  

PSETEX:以毫秒为单位设置 key 的生存时间

  

INCR:命令将 key 中储存的数字值增一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。

  

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误

  

INCRBY:将 key 中储存的数字加上指定的增量值,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

 

INCRBYFLOAT:为 key 中所储存的值加上指定的浮点数增量值,如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。

  

DECR:将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

  

DECRBY:将 key 所储存的值减去指定的减量值。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

  

APPEND:为指定的 key 追加值。如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

  

3.hash类型

HSET:为哈希表中的字段赋值 。如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。如果字段已经存在于哈希表中,旧值将被覆盖。

  

HSETNX:用于为哈希表中不存在的的字段赋值 。如果字段已经存在于哈希表中,操作无效。如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

  

HMSET:同时将多个 field-value (字段-值)对设置到哈希表中。此命令会覆盖哈希表中已存在的字段。如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。

  

HGET:返回哈希表中指定字段的值。

  

HMGET:返回哈希表中,一个或多个给定字段的值。如果指定的字段不存在于哈希表,那么返回一个 nil 值。

  

HGETALL:返回哈希表中,所有的字段和值。在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。

  

HKEYS:获取哈希表中的所有域(field)。

  

HVALS:返回哈希表所有域(field)的值。

  

HEXISTS:查看哈希表的指定字段是否存在。

  

HLEN:获取哈希表中字段的数量。

  

HINCRBY:为哈希表中的字段值加上指定增量值。增量也可以为负数,相当于对指定字段进行减法操作。如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。

  

HINCRBYFLOAT:为哈希表中的字段值加上指定浮点数增量值。如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

  

HDEL:删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。

  

4.list 类型

LPUSH:将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。

  

RPUSH:将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。

  

LPUSHX:将一个值插入到已存在的列表头部,列表不存在时操作无效。

  

RPUSHX:将一个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效。

  

LPOP:移除并返回列表的第一个元素。

  

RPOP:移除列表的最后一个元素,返回值为移除的元素。

  

LLEN:返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。

  

LRANGE:返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

  

LREM:根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。

count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。

  

count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。

  

count = 0 : 移除表中所有与 VALUE 相等的值。

  

LINDEX:通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

  

LSET:通过索引来设置元素的值。当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。

  

LTRIM:对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推

  

LINSERT:用于在列表的元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作。当列表不存在时,被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。

  

  

RPOPLPUSH:用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

  

5.set 操作

SADD:将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。当集合 key 不是集合类型时,返回一个错误。

  

SMEMBERS:返回集合中的所有的成员。 不存在的集合 key 被视为空集合。

  

SISMEMBER:判断成员元素是否是集合的成员

  

SREM:移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。当 key 不是集合类型,返回一个错误。

  

SPOP:移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素

  

SRANDMEMBER:用于返回集合中的一个随机元素

如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。

  

如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。

  

SDIFF:返回给定集合之间的差集。不存在的集合 key 将视为空集。差集的结果来自前面的 FIRST_KEY ,而不是后面的 OTHER_KEY1,也不是整个 FIRST_KEY OTHER_KEY1..OTHER_KEYN 的差集。

  

SINTER:返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。

  

SUNION:返回给定集合的并集。不存在的集合 key 被视为空集。

  

SCARD:返回集合中元素的数量

  

SDIFFSTORE:将给定集合之间的差集存储在指定的集合中。如果指定的集合 key 已存在,则会被覆盖。

  

SINTERSTORE:将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。

  

SUNIONSTORE:将给定集合的并集存储在指定的集合 destination 中。如果 destination 已经存在,则将其覆盖。

  

SMOVE:将指定成员 member 元素从 source 集合移动到 destination 集合。

  

如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。

  

当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。

  

6.zset 操作

ZADD:将一个或多个成员元素及其分数值加入到有序集当中。如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。

  

如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。

  

分数值可以是整数值或双精度浮点数。正无穷大以及负无穷大。

  

ZSCORE:返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。

  

ZRANGE:返回有序集中,指定区间内的成员。其中成员的位置按分数值递增(从小到大)来排序。具有相同分数值的成员按字典序(lexicographical order )来排列。下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

  

ZREVRANGE:返回有序集中,指定区间内的成员。其中成员的位置按分数值递减(从大到小)来排列。具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。

  

ZRANGEBYSCORE:返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。

  

限制元素个数

  

ZREVRANGEBYSCORE:返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。

  

ZINCRBY:对有序集合中指定成员的分数加上增量 increment。可以通过传递一个负数值 increment ,让分数减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。当 key 不存在,或分数不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。当 key 不是有序集类型时,返回一个错误。分数值可以是整数值或双精度浮点数。

  

ZCARD:用于计算集合中元素的数量。

  

ZCOUNT:用于计算有序集合中指定分数区间的成员数量。

  

ZREM:用于移除有序集中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。

  

ZREMRANGEBYRANK:用于移除有序集中,指定排名(rank)区间内的所有成员。

  

ZREMRANGEBYSCORE:用于移除有序集中,指定分数(score)区间内的所有成员。

  

ZRANK:返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。

  

ZREVRANK:返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。

  

ZINTERSTORE:计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。

  

AGGREGATE 参数:默认为 SUM,即上图。MAX 和 MIN 效果一样。

  

WEIGHTS参数:集合分数 X weights 然后分数相加或取最大最小值。

  

  

ZUNIONSTORE:计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和 。

  

  

六、redis 事务

MULTI:用于标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。

  

EXEC:用于执行所有事务块内的命令。

  

WATCH:用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断

  

  

UNWATCH:取消 WATCH 命令对所有 key 的监视。

  

DISCARD:取消事务,放弃执行事务块内的所有命令。

  

七、redis 连接

PING:向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。

  

ECHO:打印给定的字符串。

  

QUIT:用于关闭与当前客户端与redis服务的连接。一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭。

  

SELECT:切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。

  

AUTH:检测给定的密码和配置文件中的密码是否相符。

配置密码:

  

重启服务器后测试:

  

八、排序相关

SORT:redis支持对list,set,sorted set元素的排序

格式:sort key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] [STORE dstkey] 

  

  

字符串排序,不使用参数会报错

  

使用 LIMIT 限制数量

  

根据外部 key 的权重进行排序

  

  

  

根据排序结果取出相应键值

  

  

保存排序结果

  

九、PHP 操作 redis

第一种:redis 扩展

在 PECL 下载 redis 扩展,安装方法参考:https://blog.youkuaiyun.com/PHPer_dust/article/details/89817094

第二种:predis,git 地址:https://github.com/nrk/predis

引入自动加载文件即可使用:

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值