关键词搜索

源码搜索 ×
×

Redis大全(linux安装Redis及其函数)

发布2022-02-25浏览364次

详情内容

一、Redis安装

1、默认安装gcc版本4.8.5

#安装GCC
yum -y install gcc 

    2、可能报错需要将gcc升至5.3以上

    #安装centos-release-scl
    yum -y install centos-release-scl 
    #升级GCC版本
    yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 
    #临时设置
    scl enable devtoolset-9 bash 
    #永久设置,将配置信息追加到配置文件中
    echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile.d/my.sh 
    #查看GCC版本
    gcc -v 
    #------------------------------------------------
    gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)
    #-------------------------------------------------
    
      3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3、wget下载redis 6.0.3安装包

    #利用wget工具进行Redis数据库安装包下载
    wget http://download.redis.io/releases/redis-6.0.3.tar.gz
    

      4、解压缩并重命名

      #切换到opt目录下
      cd /opt 
      #创建software文件夹
      mkdir software 
      #创建 download文件夹
      mkdir download
      #解压Redis文件到指定文件夹里
      tar -zxvf redis 6.0.3.tar.gz -C /opt/software/ 
      
        3
      • 4
      • 5
      • 6
      • 7
      • 8

      5、进入redis根目录进行手工编译

      #切换到指定文件夹
      cd /opt/software/redis6.0.3 
      #手工编译
      make 
      
        3
      • 4

      6、Redis配置

      #用vim编辑配置文件,修改以下信息
      vim redis.conf 
      #----------------------------------------------
      port 6379 		#默认6379
      daemonize yes	#改为yes,启动后台启动:默认非后台启动
      #bind 127.0.0.1	#注释该语句,启动远程连接:默认本地连接
      requirepass kb16nb #设置访问密码,密码为:kb6nb
      appendonly yes	#混合持久化配置一:默认false
      aof-use-rdb-preamble yes #混合持久化配置二:默认true
      #-----------------------------------------------
      
        3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

      7、 启动Redis服务

      src/redis-server redis.conf #redis根目录下
      #cd src
      #redis-server /opt/software/redis603/redis.conf
      
        3

      8、查看Redis是否安装

      #管道符查找redis
      ps -aux|grep redis 
      #---------------------------------------------------------------------------------------
      root       1731  0.0  0.0 112816   976 pts/0    T    08:47   0:00 grep --color=auto redis
      root       6501  0.1  0.0 162420  7852 ?        Ssl  09:58   0:01 src/redis-server 127.0.0.1:6379
      root       6524  0.0  0.0 112816   976 pts/0    S+   10:13   0:00 grep --color=auto redis
      #---------------------------------------------------------------------------------------
      
        3
      • 4
      • 5
      • 6
      • 7

      9、关闭服务

      src/redis-cli -a kb16nb
      redis-cli -a kb16nb shutdown #关闭Redis服务
      

        10、客户端访问

        #客户端访问
        redis-cli -h localhost -p 6379 -a kb16nb
        

          11、性能测试:

          --bigkeys				#最大键值:当前实际存储
          --latency				#最大延时:持续采样
          --latency-history		#最大延时:分段采样
          
            3

          12、信息查询:

          #查看Redis的相关信息
          info cpu|memory|server|clients|stats|persistence|commandstats|keyspace|cluster redis-cli shutdown 
          

            二、Redis知识

            1、Redis数据类型

            类型简介特性场景
            String(字符串)二进制安全可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M
            Hash(字典)键值对集合,即编程语言中的Map类型适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)存储、读取、修改用户属性
            List(列表)链表(双向链表)增删快,提供了操作某一段元素的API1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列
            Set(集合)哈希表实现,元素不重复1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐
            Sorted Set(有序集合)将Set中的元素增加一个权重参数score,元素按score有序排列数据插入集合时,已经进行天然排序1、排行榜 2、带权重的消息队列

            2、Redis数据库的相关数据操作

            1.Redis的key命令

            命令语法描述
            DELDEL KEY_NAME该命令用于在 key 存在时删除 key。
            DUMPDUMP KEY_NAME序列化给定 key ,并返回被序列化的值。
            EXISTSEXISTS KEY_NAME检查给定 key 是否存在。
            ExpireExpire KEY_NAME TIME_IN_SECONDS为给定 key 设置过期时间,以秒计。
            EXPIREATExpireat KEY_NAME TIME_IN_UNIX_TIMESTAMP为给定key设置过期时间,传入的是时间戳
            PEXPIREPEXPIRE key milliseconds设置 key 的过期时间以毫秒计
            PEXPIREATPEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP设置 key 过期时间的时间戳(unix timestamp) 以毫秒计
            KEYSKEYS PATTERN查找所有符合给定模式( pattern)的 key 。
            MoveMOVE KEY_NAME DESTINATION_DATABASE将当前数据库的 key 移动到给定的数据库 db 当中。
            PERSISTPERSIST KEY_NAME移除 key 的过期时间,key 将持久保持。
            PttlPTTL KEY_NAME以毫秒为单位返回 key 的剩余的过期时间。
            TTLTTL KEY_NAME以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
            RANDOMKEYRANDOMKEY从当前数据库中随机返回一个 key 。
            RenameRENAME OLD_KEY_NAME NEW_KEY_NAME修改 key 的名称
            RenamenxRENAMENX OLD_KEY_NAME NEW_KEY_NAME仅当 newkey 不存在时,将 key 改名为 newkey 。
            ScanSCAN cursor [MATCH pattern] [COUNT count]迭代数据库中的数据库键。
            TYPETYPE KEY_NAME返回 key 所储存的值的类型。

            2.字符串命令

            命令语法描述
            Redis Setnx 命令SETNX KEY_NAME VALUE只有在 key 不存在时设置 key 的值。
            Redis Getrange 命令GETRANGE KEY_NAME start end返回 key 中字符串值的子字符
            Redis Mset 命令MSET key1 value1 key2 value2 … keyN valueN同时设置一个或多个 key-value 对。
            Redis Setex 命令SETEX KEY_NAME TIMEOUT VALUE将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
            Redis SET 命令SET KEY_NAME设置指定 key 的值
            Redis Get 命令GET KEY_NAME获取指定 key 的值。
            Redis Getbit 命令GETBIT KEY_NAME OFFSET对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
            Redis Setbit 命令Setbit KEY_NAME OFFSET对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
            Redis Decr 命令DECR KEY_NAME将 key 中储存的数字值减一。
            Redis Decrby 命令DECRBY KEY_NAME DECREMENT_AMOUNTkey 所储存的值减去给定的减量值(decrement) 。
            Redis Strlen 命令STRLEN KEY_NAME返回 key 所储存的字符串值的长度。
            Redis Msetnx 命令MSETNX key1 value1 key2 value2 … keyN valueN同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
            Redis Incrby 命令INCRBY KEY_NAME INCR_AMOUNT将 key 所储存的值加上给定的增量值(increment) 。
            Redis Incrbyfloat 命令INCRBYFLOAT KEY_NAME INCR_AMOUNT将 key 所储存的值加上给定的浮点增量值(increment) 。
            Redis Setrange 命令SETRANGE KEY_NAME OFFSET VALUE用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
            Redis Psetex 命令PSETEX key1 EXPIRY_IN_MILLISECONDS value1这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
            Redis Append 命令APPEND KEY_NAME NEW_VALUE如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
            Redis Getset 命令GETSET KEY_NAME VALUE将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
            Redis Mget 命令GET KEY1 KEY2 … KEYN获取所有(一个或多个)给定 key 的值。
            Redis Incr 命令NCR KEY_NAME将 key 中储存的数字值增一。

            3.哈希(Hash)命令

            命令语法描述
            Redis Hmset 命令HMSET KEY_NAME FIELD1 VALUE1 …FIELDN VALUEN同时将多个 field-value (域-值)对设置到哈希表 key 中。
            Redis Hmget 命令HMGET KEY_NAME FIELD1…FIELDN获取所有给定字段的值
            Redis Hset 命令HSET KEY_NAME FIELD VALUE将哈希表 key 中的字段 field 的值设为 value 。
            Redis Hgetall 命令HGETALL KEY_NAME获取在哈希表中指定 key 的所有字段和值
            Redis Hget 命令HGET KEY_NAME FIELD_NAME获取存储在哈希表中指定字段的值/td>
            Redis Hexists 命令HEXISTS KEY_NAME FIELD_NAME查看哈希表 key 中,指定的字段是否存在。
            Redis Hincrby 命令HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER ·为哈希表 key 中的指定字段的整数值加上增量 increment 。
            Redis Hlen 命令HLEN KEY_NAME获取哈希表中字段的数量
            Redis Hdel 命令HDEL KEY_NAME FIELD1… FIELDN删除一个或多个哈希表字段
            Redis Hvals 命令HVALS key获取哈希表中所有值
            Redis Hincrbyfloat 命令HINCRBYFLOAT key field increment为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
            Redis Hkeys 命令HKEYS key获取所有哈希表中的字段
            Redis Hsetnx 命令HSETNX KEY_NAME FIELD VALUE只有在字段 field 不存在时,设置哈希表字段的值。
            RedisHscan命令HSCAN key cursor [MATCH pattern] [COUNT count]迭代哈希表的键值对

            4.列表(List)命令

            命令语法描述
            Redis Lindex 命令LINDEX KEY_NAME INDEX_POSITION通过索引获取列表中的元素
            Redis Rpush 命令RPUSH KEY_NAME VALUE1…VALUEN在列表中添加一个或多个值
            Redis Lrange 命令LRANGE KEY_NAME START END获取列表指定范围内的元素
            Redis Rpoplpush 命令RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME移除列表的最后一个元素,并将该元素添加到另一个列表并返回
            Redis Blpop 命令BLPOP LIST1 LIST2 … LISTN TIMEOUT移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
            Redis Brpop 命令BRPOP LIST1 LIST2 … LISTN TIMEOUT移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
            Redis Brpoplpush 命令BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
            Redis Lrem 命令LREM key count VALUE移除列表元素
            Redis Llen 命令LLEN KEY_NAME获取列表长度
            Redis Ltrim 命令LTRIM KEY_NAME START STOP对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
            Redis Lpop 命令Lpop KEY_NAME移出并获取列表的第一个元素
            Redis Lpushx 命令LPUSHX KEY_NAME VALUE1… VALUEN将一个或多个值插入到已存在的列表头部
            Redis Linsert 命令LINSERT key BEFORE|AFTER pivot value在列表的元素前或者后插入元素
            Redis Rpop 命令RPOP KEY_NAME移除并获取列表最后一个元素
            Redis Lset 命令LSET KEY_NAME INDEX VALUE通过索引设置列表元素的值
            Redis Lpush 命令LPUSH KEY_NAME VALUE1… VALUEN将一个或多个值插入到列表头部
            Redis Rpushx 命令RPUSHX KEY_NAME VALUE1…VALUEN为已存在的列表添加值

            5.集合(Set)命令

            命令语法描述
            Redis Sunion 命令SUNION KEY KEY1…KEYN返回所有给定集合的并集
            Redis Scard 命令SCARD KEY_NAME获取集合的成员数
            Redis Srandmember 命令SRANDMEMBER KEY [count]返回集合中一个或多个随机数
            Redis Smembers 命令SMEMBERS key返回集合中的所有成员
            Redis Sinter 命令SINTER KEY KEY1…KEYN返回给定所有集合的交集
            Redis Srem 命令SREM KEY MEMBER1…MEMBERN移除集合中一个或多个成员
            Redis Smove 命令SMOVE SOURCE DESTINATION MEMBER将 member 元素从 source 集合移动到 destination 集合
            Redis Sadd 命令SADD KEY_NAME VALUE1…VALUEN向集合添加一个或多个成员
            Redis Sismember 命令SISMEMBER KEY VALUE判断 member 元素是否是集合 key 的成员
            Redis Sdiffstore 命令SDIFFSTORE DESTINATION_KEY KEY1…KEYN返回给定所有集合的差集并存储在 destination 中
            Redis Sdiff 命令SDIFF FIRST_KEY OTHER_KEY1…OTHER_KEYN返回给定所有集合的差集
            Redis Sscan 命令SSCAN key cursor [MATCH pattern] [COUNT count]迭代集合中的元素
            Redis Sinterstore 命令SINTERSTORE DESTINATION_KEY KEY KEY1…KEYN返回给定所有集合的交集并存储在 destination 中
            Redis Sunionstore 命令SUNIONSTORE destination key [key …]所有给定集合的并集存储在 destination 集合中
            Redis Spop 命令SPOP key [count]移除并返回集合中的一个随机元素

            6.有序集合命令

            命令语法描述
            Redis Zrevrank 命令ZREVRANK key member返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
            Redis Zlexcount 命令ZLEXCOUNT KEY MIN MAX在有序集合中计算指定字典区间内成员数量
            Redis Zunionstore 命令ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]计算给定的一个或多个有序集的并集,并存储在新的 key 中
            Redis Zremrangebyrank 命令ZREMRANGEBYRANK key start stop移除有序集合中给定的排名区间的所有成员
            Redis Zcard 命令ZCARD KEY_NAME获取有序集合的成员数
            Redis Zrem 命令ZREM key member [member …]移除有序集合中的一个或多个成员
            Redis Zinterstore 命令ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
            Redis Zrank 命令ZRANK key member返回有序集合中指定成员的索引
            Redis Zincrby 命令ZINCRBY key increment member有序集合中对指定成员的分数加上增量 increment
            Redis Zrangebyscore 命令ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]通过分数返回有序集合指定区间内的成员
            Redis Zrangebylex 命令ZRANGEBYLEX key min max [LIMIT offset count]通过字典区间返回有序集合的成员
            Redis Zscore 命令ZSCORE key member返回有序集中,成员的分数值
            Redis Zremrangebyscore 命令ZREMRANGEBYSCORE key min max移除有序集合中给定的分数区间的所有成员
            Redis Zscan 命令ZSCAN key cursor [MATCH pattern] [COUNT count]迭代有序集合中的元素(包括元素成员和元素分值)
            Redis Zrevrangebyscore 命令ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]返回有序集中指定分数区间内的成员,分数从高到低排序
            Redis Zremrangebylex 命令ZREMRANGEBYLEX key min max移除有序集合中给定的字典区间的所有成员
            Redis Zrevrange 命令ZREVRANGE key start stop [WITHSCORES]返回有序集中指定区间内的成员,通过索引,分数从高到底
            Redis Zrange 命令ZRANGE key start stop [WITHSCORES]通过索引区间返回有序集合成指定区间内的成员
            Redis Zcount 命令ZCOUNT key min max计算在有序集合中指定区间分数的成员数
            Redis Zadd 命令ZADD KEY_NAME SCORE1 VALUE1… SCOREN VALUEN向有序集合添加一个或多个成员,或者更新已存在成员的分数

            7.连接命令

            命令语法描述
            Redis Echo 命令ECHO message打印字符串
            Redis Select 命令SELECT index切换到指定的数据库
            Redis Ping 命令PING查看服务是否运行
            Redis Quit 命令QUIT关闭当前连接
            Redis Auth 命令AUTH PASSWORD验证密码是否正确

            8.Redis服务器命令

            命令语法描述
            Redis Client Pause 命令CLIENT PAUSE timeout在指定时间内终止运行来自客户端的命令
            Redis Debug Object 命令DEBUG OBJECT key获取 key 的调试信息
            Redis Flushdb 命令FLUSHDB删除当前数据库的所有key
            Redis Save 命令SAVE异步保存数据到硬盘
            Redis Lastsave 命令LASTSAVE返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
            Redis Config Get 命令CONFIG GET parameter获取指定配置参数的值
            Redis Command 命令COMMAND获取 Redis 命令详情数组
            Redis Slaveof 命令SLAVEOF host port将当前服务器转变为指定服务器的从属服务器(slave server)
            Redis Debug Segfault 命令DEBUG SEGFAULT让 Redis 服务崩溃
            Redis Flushall 命令FLUSHALL删除所有数据库的所有key
            Redis Dbsize 命令DBSIZE返回当前数据库的 key 的数量
            Redis Bgrewriteaof 命令BGREWRITEAOF异步执行一个 AOF(AppendOnly File) 文件重写操作
            Redis Cluster Slots 命令CLUSTER SLOTS获取集群节点的映射数组
            Redis Config Set 命令CONFIG Set parameter value修改 redis 配置参数,无需重启
            Redis Command Info 命令COMMAND INFO command-name [command-name …]获取指定 Redis 命令描述的数组
            Redis Shutdown 命令SHUTDOWN [NOSAVE] [SAVE]异步保存数据到硬盘,并关闭服务器
            Redis Sync 命令SYNC用于复制功能(replication)的内部命令
            Redis Client Kill 命令CLIENT KILL ip:port关闭客户端连接
            Redis Role 命令ROLE返回主从实例所属的角色
            Redis Monitor 命令MONITOR实时打印出 Redis 服务器接收到的命令,调试用
            Redis Command Getkeys 命令COMMAND GETKEYS获取给定命令的所有键
            Redis Client Getname 命令CLIENT GETNAME获取连接的名称
            Redis Config Resetstat 命令CONFIG RESETSTAT重置 INFO 命令中的某些统计数据
            Redis Command Count 命令COMMAND COUNT获取 Redis 命令总数
            Redis Time 命令TIME返回当前服务器时间
            Redis Info 命令INFO [section]获取 Redis 服务器的各种信息和统计数值
            Redis Config rewrite 命令CONFIG REWRITE parameter对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写
            Redis Client List 命令CLIENT LIST获取连接到服务器的客户端连接列表
            Redis Client Setname 命令CLIENT SETNAME connection-name设置当前连接的名称
            Redis Bgsave 命令BGSAVE在后台异步保存当前数据库的数据到磁盘
            Redis slowlog 命令SLOWLOG subcommand [argument]管理 redis 的慢日志

            9.脚本命令

            命令语法描述
            Redis Script kill 命令SCRIPT KILL杀死当前正在运行的 Lua 脚本。
            Redis Script Load 命令SCRIPT LOAD script将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。
            Redis Eval 命令EVAL script numkeys key [key …] arg [arg …]执行 Lua 脚本。
            Redis Evalsha 命令EVALSHA sha1 numkeys key [key …] arg [arg …]执行 Lua 脚本。
            Redis Script Exists 命令SCRIPT EXISTS sha1 [sha1 …]查看指定的脚本是否已经被保存在缓存当中。
            Redis Script Flush 命令SCRIPT FLUSH从脚本缓存中移除所有脚本。

            10.事务命令

            命令语法描述
            Redis Exec 命令Exec执行所有事务块内的命令。
            Redis Watch 命令WATCH key [key …]监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
            Redis Discard 命令DISCARD取消事务,放弃执行事务块内的所有命令。
            Redis Unwatch 命令UNWATCH取消 WATCH 命令对所有 key 的监视。
            Redis Multi 命令Multi标记一个事务块的开始。

            11.HyperLogLog命令

            命令语法描述
            Redis Pfmerge 命令PFMERGE destkey sourcekey [sourcekey …]将多个 HyperLogLog 合并为一个 HyperLogLog
            Redis Pfadd 命令PFADD key element [element …]添加指定元素到 HyperLogLog 中。
            Redis Pfcount 命令PFCOUNT key [key …]返回给定 HyperLogLog 的基数估算值

            12.发布订阅命令

            命令语法描述
            Redis Unsubscribe 命令UNSUBSCRIBE channel [channel …]指退订给定的频道。
            Redis Subscribe 命令SUBSCRIBE channel [channel …]订阅给定的一个或多个频道的信息。
            Redis Pubsub 命令PUBSUB <subcommand> [argument [argument …]]查看订阅与发布系统状态。
            Redis Punsubscribe 命令PUNSUBSCRIBE [pattern [pattern …]]退订所有给定模式的频道。
            Redis Publish 命令PUBLISH channel message将信息发送到指定的频道。
            Redis Psubscribe 命令PSUBSCRIBE pattern [pattern …]订阅一个或多个符合给定模式的频道。

            13.地理日志命令

            命令语法描述
            Redis GEOHASH 命令GEOHASH key member [member …]返回一个或多个位置元素的 Geohash 表示
            Redis GEOPOS 命令GEOPOS key member [member …]从key里返回所有给定位置元素的位置(经度和纬度)
            Redis GEODIST 命令GEODIST key member1 member2 [m|km|ft|mi]返回两个给定位置之间的距离
            Redis GEORADIUS 命令GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]以给定的经纬度为中心, 找出某一半径内的元素
            Redis GEOADD 命令GEOADD key longitude latitude member [longitude latitude member …]将指定的地理空间位置(纬度、经度、名称)添加到指定的key中
            Redis GEORADIUSBYMEMBER 命令GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]找出位于指定范围内的元素,中心点是由给定的位置元素决定

            相关技术文章

            点击QQ咨询
            开通会员
            返回顶部
            ×
            微信扫码支付
            微信扫码支付
            确定支付下载
            请使用微信描二维码支付
            ×

            提示信息

            ×

            选择支付方式

            • 微信支付
            • 支付宝付款
            确定支付下载