第一部分 redis的常用指令

一、针对key的操作

1.1 del key [key .. ]                 , 删除指定的一个或者多个key;
1.2 dump key                          , 序列化给定的key
1.3 restore key ttl serialized-value  , 反序列化到key
1.4 exists key                        , 判断某一key是否存在
1.5 expire key seconds                , 设置key的过期时间 

            ① set命令可以覆盖过期时间;不改变key的操作不会影响key的生存时间
② rename也不会改变key的过期时间
③ persist命令可以删除key的过期时间,即永久
④ ttl可以查看redis中key的过期时间
1.6 expireat key timestamp            , 设置key的生存时间
1.7 keys pattern                      , 查找所有符合给定模式pattern的key

            ① *, ?, [m,n]
1.8 move key db                       , 将当前数据库中的key移动数据库 db中。使用select db可以切换数据库
1.9 persist key                       , 移除给定 key 的生存时间
1.10 pexpire,pexpireat                , 设置key的过期、生存时间,单位毫秒
1.11 ttl,pttl                         , key的剩余过期时间,单位秒,单位是毫秒
1.12 randomkey                        , 随机返回一个key
1.13 rename key newkey                , 将 key 改名为 newkey ,当newkey存在时会覆盖
1.14 renamenx key newkey              ,  当newkey不存在时,将key改名为newkey
1.15 sort key [by pattern] [get pattern [get pattern]] [limit offset count] [asc | desc] [alpha] [store destination]  ,排序,pattern可以有 *字符出现
1.16 type key                         ,  返回key所存储的值的类型 (none,string,list,set,zset,hash)
1.17 scan [db] cursor [MATCH pattern] [COUNT count] ,增量式迭代。  类似有 sscan,hscan,zscan

          ① SCAN命令用于迭代当前数据库中的数据库键。   返回结果为:用于下一次迭代的新游标;所有被迭代的元素

          ② SSCAN 命令用于迭代集合键中的 元素。

          ③ HSCAN 命令用于迭代哈希键中的 键值对。

          ④ ZSCAN 命令用于迭代有序集合中的 元素(包括元素成员和元素分值)

二、String操作

2.1 append key value                 , 将value追加到原先值的末尾
2.2 bitcount key [start] [end]       , 计算给定字符串中,设置为1的比特位的数据量。
      ① 注意字符串"1"对应的十进制为49,二进制为00110001
      ② 可以通过setbit key offset value
2.3 bitop operation destkey key [key ...]  , 对key的二进制字符串进行元操作,operation可以是and,or, not,xor。
2.4 decr key                          , 将key中存储的数字值减一
      ① 与incr命令相反
2.5 decrby key decrement              , 将key所存储的值减去减量decrement
      ② 与incrby命令相反
2.6 get key
2.7 getbit key offset                 , 获取key中所存储字符串值对应偏移量上的bit
2.8 getrange key start end            , 返回key中字符串值的子字符串
2.9 getset key value                  , 设置key的值为value,并返回key的旧值
2.10 mget key [key ...]               , 返回指定的多个key的值
2.11 mset key value [key value ...]   , 同时设置多个key-value值
2.12 msetnx key value [key value ...] , 当且仅当所有的key都不存在时,同时设置多个key-value对
2.13 set key value [EX second] [PX millisceonds] [NX|XX]
       ① setex key second value , 设置key的同时设置过期时间单位为秒
       ② psetex key millisceonds value , 过期时间单位为毫秒
③ setbit key offset value , 设置指定偏移量上的位
④ setnx key value , 当且仅当key不存在时设置key的value
⑤ setrange key offset value , 从offset开始,用value参数覆盖key中的值
2.14 strlen key                      , 返回key中所存字符串的长度

三、 Hash操作

3.1 hdel key field [field ...]       , 删除哈希表key中的一个或多个指定域
3.2 hexists key field                , 查看哈希表key中给定的field是否存在
3.3 hget key feild                   , 查看哈希表key中给定的field的值
      ① hgetall key , 查看哈希表key中所有的field的值
  ② hmget key field [field ...] , 返回哈希表key中一个或多个给定域的值
3.4 hincrby key field increment      , 为哈希表key中的field的值加上增量increment
3.5 hkeys key                        , 获取哈希表key中的所有域
3.6 hlen key                         , 返回哈希表key中域的数量
3.7 hset key field value             , 设置哈希表key中field的值
      ① hmset key field value [field value] , 同时设置过个field的值
  ② hsetnx key field value , 当field不存在时,设置field的值
3.8 hvals key                        , 返回哈希表key中所有域的值
3.9 hstrlen key field                , 返回哈希表key中给定field关联值的字符长度

四、List操作(List相当于堆栈)

4.1 lpush key value [value ...]      , 将一个或者多个值插入到列表key的表头
      ① rpush key value [value ...] , 将一个或者多个值插入到列表key的表尾
  ② lpushx key value ,当且仅当key存在时将值value插入到key的表头
  ③ rpushx key value ,当且仅当key存在时将值value插入到key的表尾
4.2 lpop key                          , 移除并返回列表key的头元素
      ① rpop key , 移除并返回列表的尾元素
  ② blpop key [key ...] timeout , lpop的阻塞式指令
  ③ brpop key [key ...] timeout , rpop的阻塞式指令
  ④ rpoplpush source destination , 将列表Source的尾元素弹出以及返回客户端,并且将该元素插入到destination列表中
  ⑤ brpoplpush source destination timeout , rpoplpush的阻塞版
4.3 lindex key index                  , 返回key中下表为index的元素
4.4 linsert key before|after pivot value , 将值value插入到key中,位为pivot之前或者之后
4.5 llen key                           , 返回列表key的长度
4.6 lrange key start stop              , 返回列表key中指定区间内的元素
4.7 lrem key count value               , 根据count的值,移除列表中与参数value相等的元素
4.8 lset key index value               , 将列表key下表为index的元素值设置为value
4.9 ltrim key start stop               , 对一个列表进行trim

五、Set操作(不可重复)

5.1 sadd key member [member ...]       , 将元素加入到集合key中,已经有的忽略
5.2 scard key                          , 返回集合key的元素个数
5.3 sdiff key [key ...]                , 返回一个集合的全部成员,该集合是所有给定集合之间的差集
5.4 sdiffstore destination key [key ...] , 放回集合之间的差集,并将它保存在destination集合中
5.5 sinter key [key ...]               ,返回集合中给定集合的交集
5.6 sinterstore destination key [key ...] , 返回给定集合之间的差集,并将它保存在destination集合中
5.7 sismember key member               , 判断member元素是否为集合key成员
5.8 smembers key                       , 返回集合中的所有成员
5.9 smove source destination member    , 将member元素从source集合移动到destination集合
5.10 spop key                          , 移除并返回集合中的一个随机元素
5.11 srandmember key [count]           , 返回指定count个数的集合,count为正数表示不能重复,负数可以重复
5.12 srem key member [member ...]      , 移除集合key中的多个元素
5.13 sunion key [key ...]              , 返回所有指定key的并集
5.14 sunionstore destination key [key ...]

六、ZADD操作(有序集合)

6.1 zadd key source member [[source member] [...]] , 将一个或者多个member元素及其score值加入到有序集合key中
6.2 zcard key                          , 返回有序集合key的元素个数
6.3 zcount key min max                 , 返回有序集合key中,score值在min和max之间的元素个数
6.4 zincrby key increment member       , 为有序集合key的成员member的score值加上增量increment
6.5 zrange key start stop              , 返回有序集key中,指定下标区间内的成员
  ① zrevrange key start stop [withscores] , 返回指定区间内的成员递减顺序
  ② zrevrangebyrank key max min [withscores] [limit offset count]
6.6 zrangebyscore key min max [withscopes] [limit offset count] , 返回score值介于min和max之间的集合
6.7 zrank key member                   , 返回有序集key中成员member的排名
  ① zrevrank key member          , 返回有序集key中成员member的递减排名
6.8 zrem key member [member ...]       , 移除有序集key中的多个成员
      ① zremrangebyrank key start stop , 移除有序集key中,指定排名区间内的所有成员
  ② zremrangebyscore key min max , 移除有序集key中,指定score范围内的成员
6.9 zscore key member                  , 返回成员member的score值

七、pub/sub(发布、订阅)

7.1 psubscribe pattern [pattern ...]   , 订阅一个或者多个符合给定模式的频道
7.2 publish channel message            , 将信息message发送到指定的频道channel
7.3 pubsub <subcommand> [argument ...] , 查看订阅与发布系统状态的内省命令
  eg pubsub channels [pattern] , 列出当前的活跃频道,订阅模式的客户端不计算在内
  eg pubsub numsub [channel-1 ...] , 返回给定频道的订阅者数量,订阅模式的客户端不计算在内
7.4 punsubscribe [pattern ...]          , 指示客户端退订所有给定模式
7.5 subscribe channel [channel ...]     , 订阅给定的一个或者多个频道信息
7.6 unsubscribe [channel ...]           , 指示客户端退订给定的频道

八、Transaction(事务)

8.1 discard                             , 取消执行事务块内的所有命令
8.2 exec                                , 执行事务块内的命令
8.3 multi                               , 标记一个事务块的开始
8.4 unwatch                             , 取消watch命令对所有key的监视
8.5 watch key [key ...]                 , 监视一个或者多个key,如果事务执行之前,这个kye被其它命令所动,则事务被打断

九、Connection(连接)

9.1 auth password                       , 登录redis时输入密码
9.2 echo message                        , 打印一个特定的信息message,测试时使用
9.3 ping                                , 测试与服务器的连接,如果正常则返回pong
9.4 quit                                , 请求服务器关闭与当前客户端的连接
9.5 select index                        , 切换到指定的数据库

十、Server(服务器)

10.1 bgsave                             , 后台异步保存数据到硬盘
10.2 client setname/client getname      , 为连接设置、获取名字
10.3 client kill ip:port                , 关闭地址为 ip:port的客户端
10.4 client list                        , 以人类可读的方式,返回所有的连接客户端信息和统计数据
10.5 config get parameter               , 取得运行redis服务器的配置参数
10.6 config set parameter value         , 设置redis服务器的配置参数
10.7 config resetstat                   , 重置info命令的某些统计数据
10.8 dbsize                             , 返回当前数据库中key的数量
10.9 flushall                           , 清空整个redis服务器的数据(删除所有数据库的所有 key)
10.10 flushdb                           , 清空当前数据库中的所有key
10.11 info [section]                    , 返回redis服务器的各种信息和统计数据
10.12 lastsave                          , 返回最近一次redis成功将数据保存到磁盘时的时间
10.13 monitor                           , 实时打印出redis服务器接收到的指令
10.14 save                              , 将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘
10.15 slaveof host port                 , 将当前服务器转变为指定服务器的从属服务器
10.16 slowlog subcommand [argument]     , Redis 用来记录查询执行时间的日志系统

第二部分 redis的一些功能介绍

一、持久化

1.1 持久化方式:RDB与AOF。
①RDB:在指定的时间间隔内生成数据集的时间点快照(snapshot);
②AOF(append-only file):持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。
③Redis支持同时使用AOF和RDB持久化。在这种情况下,当Redis重启时,它会优先使用AOF文件来还原数据集,因为AOF文件保存的数据集通常比RDB文件所保存的数据集更完整。
1.2 RDB持久化
   当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作:
①Redis 调用 fork()。
②子进程将数据集写入到一个临时 RDB 文件中。
③当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。
缺点:如果 Redis 因为某些原因而造成故障停机, 那么服务器将丢失最近写入、且仍未保存到快照中的那些数据。因此需要使用开启AOF。
1.3 AOF重写
①AOF的运作方式是不断地将命令追加到文件的末尾,所以随着写入命令的不断增加,AOF文件的体积也会变得越来越大。
②你可以配置 Redis 多久才将数据 fsync 到磁盘一次。有三个选项,每次有新命令追加到 AOF 文件时就执行一次 fsync :非常慢,也非常安全;每秒 fsync 一次:足够快(和使用 RDB 持久化差不多),并且在故障时只会丢失 1 秒钟的数据;从不 fsync :将数据交给操作系统来处理。更快,也更不安全的选择。
③AOF重写步骤:
   (1)Redis 执行 fork() ,现在同时拥有父进程和子进程。
   (2)子进程开始将新 AOF 文件的内容写入到临时文件。
   (3)对于所有新执行的写入命令,父进程一边将它们累积到一个内存缓存中,一边将这些改动追加到现有AOF文件的末尾:这样即使在重写的中途发生停机,现有的 AOF 文件也还是安全的。
   (4)当子进程完成重写工作时,它给父进程发送一个信号,父进程在接收到信号之后,将内存缓存中的所有数据追加到新 AOF 文件的末尾。
   (5)搞定!现在 Redis 原子地用新文件替换旧文件,之后所有命令都会直接追加到新 AOF 文件的末尾。
④从RDB持久化到AOF持久化切换
    (1)为最新的 dump.rdb 文件创建一个备份。

             (2)将备份放到一个安全的地方。

             (3)执行以下两条命令:

                      CONFIG SET appendonly yes

                      CONFIG SET save ""    //关闭RDB功能
1.4 数据备份
①创建一个定期任务(cron job)每小时将一个RDB文件备份到一个文件夹,并且每天将一个RDB文件备份到另一个文件夹。 ②确保快照的备份都带有相应的日期和时间信息,每次执行定期任务脚本时,使用find命令来删除过期的快照:比如说,你可以保留最近48小时内的每小时快照,还可以保留最近一两个月的每日快照。

        ③至少每天一次,将RDB备份到你的数据中心之外,或者至少是备份到你运行Redis服务器的物理机器之外。

二、Sentinel

2.1 Redis的Sentinel系统用于管理多个Redis服务器,该系统执行以下三个任务
①监控(Monitoring):Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
②提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。
③自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。
2.2 启动 Sentinel
①redis-sentinel /path/to/sentinel.conf
②redis-server /path/to/sentinel.conf --sentinel
2.3 配置 Sentinel
sentinel monitor mymaster 127.0.0.1 6379 2   //配置指示 Sentinel 去监视一个名为 mymaster 的主服务器。这个主服务器的 IP 地址为 127.0.0.1 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意
sentinel down-after-milliseconds mymaster 60000  //选项指定了 Sentinel 认为服务器已经断线所需的毫秒数
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1    //选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步

sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
2.4 主客观下线
①主观下线(Subjectively Down,简称SDOWN)指的是单个 Sentinel 实例对服务器做出的下线判断。
②客观下线(Objectively Down,简称ODOWN)指的是多个 Sentinel 实例在对同一个服务器做出 SDOWN 判断,并且通过SENTINEL is-master-down-by-addr命令互相交流之后,得出的服务器下线判断。(一个 Sentinel 可以通过向另一个 Sentinel发送SENTINEL is-master-down-by-addr命令来询问对方是否认为给定的服务器已下线。)
2.5 Sentinel需要定期执行的任务
①每个Sentinel以每秒钟一次的频率向它所知的主服务器、从服务器以及其他 Sentinel 实例发送一个 PING 命令。
②如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 那么这个实例会被 Sentinel 标记为主观下线。 一个有效回复可以是: +PONG 、 -LOADING 或者 -MASTERDOWN 。
③如果一个主服务器被标记为主观下线,那么正在监视这个主服务器的所有 Sentinel 要以每秒一次的频率确认主服务器的确进入了主观下线状态。
④如果一个主服务器被标记为主观下线,并且有足够数量的Sentinel(至少要达到配置文件指定的数量)在指定的时间范围内同意这一判断,那么这个主服务器被标记为客观下线。
⑤在一般情况下,每个 Sentinel 会以每10秒一次的频率向它已知的所有主服务器和从服务器发送INFO命令。 当一个主服务器被Sentinel标记为客观下线时,Sentinel 向下线主服务器的所有从服务器发送 INFO 命令的频率会从 10 秒一次改为每秒一次。
⑥当没有足够数量的 Sentinel 同意主服务器已经下线, 主服务器的客观下线状态就会被移除。 当主服务器重新向 Sentinel 的 PING 命令返回有效回复时, 主服务器的主观下线状态就会被移除。
2.6 Sentinel API
①主要有两种:(1)通过直接发送命令来查询被监视 Redis 服务器的当前状态;(2)使用发布与订阅功能, 通过接收 Sentinel 发送的通知。
②Sentinel命令
(1)PING :返回 PONG 。
(2)SENTINEL masters :列出所有被监视的主服务器,以及这些主服务器的当前状态。
(3)SENTINEL slaves <master name> :列出给定主服务器的所有从服务器,以及这些从服务器的当前状态。
(4)SENTINEL get-master-addr-by-name <master name> 返回给定名字的主服务器的IP地址和端口号。如果这个主服务器正在执行故障转移操作,或者针对这个主服务器的故障转移操作已经完成, 那么这个命令返回新的主服务器的 IP地址和端口号。
(5)SENTINEL reset <pattern> : 重置所有名字和给定模式 pattern 相匹配的主服务器。 pattern 参数是一个 Glob 风格的模式。 重置操作清除主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel 。
(6)SENTINEL failover <master name> : 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移 (不过发起故障转移的 Sentinel 会向其他 Sentinel 发送一个新的配置,其他 Sentinel 会根据这个配置进行相应的更新)。
③发布与订阅信息
客户端可以将 Sentinel 看作是一个只提供了订阅功能的Redis服务器:你不可以使用 PUBLISH命令向这个服务器发送信息,但你可以用SUBSCRIBE命令或者PSUBSCRIBE 命令, 通过订阅给定的频道来获取相应的事件提醒。
客户端可以通过订阅来获得的频道和信息的格式:第一个英文单词是频道/事件的名字
<instance-type> <name> <ip> <port> @ <master-name> <master-ip> <master-port>

三、redis集群

3.1 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施
   notice :Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低 Redis 集群的性能,并导致不可预测的行为。
3.2 redis集群好处,Redis 集群提供了以下两个好处:
将数据自动切分(split)到多个节点的能力。
当集群中的一部分节点失效或者无法进行通讯时, 仍然可以继续处理命令请求的能力。
3.3 redis集群数据共享
   ①Redis 集群使用数据分片(sharding)而非一致性哈希(consistency hashing)来实现: 一个 Redis 集群包含 16384 个哈希槽(hash slot), 数据库中的每个键都属于这 16384 个哈希槽的其中一个, 集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中 CRC16(key) 语句用于计算键 key 的 CRC16 校验和。
②将一个哈希槽从一个节点移动到另一个节点不会造成节点阻塞, 所以无论是添加新节点还是移除已存在节点, 又或者改变某个节点包含的哈希槽数量, 都不会造成集群下线。
3.4 集群的主从复制
为了使得集群在一部分节点下线或者无法与集群的大多数(majority)节点进行通讯的情况下,仍然可以正常运作,Redis集群对节点使用了主从复制功能:集群中的每个节点都有 1 个至 N 个复制品(replica),其中一个复制品为主节点(master),而其余的 N-1个复制品为从节点(slave)。
3.5 节点属性
   ①每个节点在集群中都有一个独一无二的 ID ,该ID是一个十六进制表示的160位随机数,在节点第一次启动时由 /dev/urandom 生成。
节点信息:  节点所使用的 IP 地址和 TCP 端口号。
节点的标志(flags)。
节点负责处理的哈希槽。
节点最近一次使用集群连接发送 PING 数据包(packet)的时间。
节点最近一次在回复中接收到 PONG 数据包的时间。
集群将该节点标记为下线的时间。
该节点的从节点数量。
如果该节点是从节点的话,那么它会记录主节点的节点 ID 。如果这是一个主节点的话,那么主节点 ID 这一栏的值为 0000000 。
eg  redis-cli cluster nodes
d1861060fe6a534d42d8a19aeb36600e18785e04 :0 myself - 0 1318428930 connected 0-1364
3886e65cc906bfd9b1f7e7bde468726a052d1dae 127.0.0.1:6380 master - 1318428930 1318428931 connected 1365-2729
d289c575dcbc4bdd2931585fd4339089e461a27d 127.0.0.1:6381 master - 1318428931 1318428931 connected 2730-4095
3.6 集群在线重配置
①redis集群支持在集群运行的过程中过程中添加或者移除节点
添加一个新节点到集群, 等于将其他已存在节点的槽移动到一个空白的新节点里面。
从集群中移除一个节点, 等于将被移除节点的所有槽移动到集群的其他节点上面去。
②CLUSTER命令可用的子命令:当槽被指派或者移除之后,节点会将这一信息通过Gossip协议传播到整个集群
CLUSTER ADDSLOTS slot1 [slot2] ... [slotN]   //向节点添加槽
CLUSTER DELSLOTS slot1 [slot2] ... [slotN]   //向节点删除槽
CLUSTER SETSLOT slot NODE node               //将指定的槽指派给节点node
CLUSTER SETSLOT slot MIGRATING node    //将给定节点 node 中的槽 slot 迁移出节点
CLUSTER SETSLOT slot IMPORTING node  // 将给定槽 slot 导入到节点 node

四、Redis过期键删除策略

  • 被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key
  • 主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key
  • 当前已用内存超过maxmemory限定时,触发主动清理策略

4.1 被动删除
只有key被操作时(如GET),REDIS才会被动检查该key是否过期,如果过期则删除之并且返回NIL。
1、这种删除策略对CPU是友好的,删除操作只有在不得不的情况下才会进行,不会其他的expire key上浪费无谓的CPU时间。
2、但是这种策略对内存不友好,一个key已经过期,但是在它被操作之前不会被删除,仍然占据内存空间。如果有大量的过期键存在但是又很少被访问到,那会造成大量的内存空间浪费。
4.2 主动删除
相当于一个定时任务,主动扫描过期的key。
4.3 主动清除策略
当前已用内存超过maxmemory的限定后,主动触发清除策略。当mem_used内存已经超过maxmemory的设定,对于所有的读写请求,都会触发函数以清理超出的内存。注意这个清理过程是阻塞的,直到清理出足够的内存空间。所以如果在达到maxmemory并且调用方还在不断写入的情况下,可能会反复触发主动清理策略,导致请求会有一定的延迟。
noeviction:当到达内存限制时返回错误。当客户端尝试执行命令时会导致更多内存占用(大多数写命令,除了 DEL 和一些例外)。
allkeys-lru:回收最近最少使用(LRU)的键,为新数据腾出空间。
volatile-lru:回收最近最少使用(LRU)的键,但是只回收有设置过期的键,为新数据腾出空间。
allkeys-random:回收随机的键,为新数据腾出空间。
volatile-random:回收随机的键,但是只回收有设置过期的键,为新数据腾出空间。
volatile-ttl:回收有设置过期的键,尝试先回收离 TTL 最短时间的键,为新数据腾出空间。



原文地址:https://blog.csdn.net/u013758116/article/details/53433997

redis常用指令总结以及功能介绍的更多相关文章

  1. redis基础:redis下载安装与配置,redis数据类型使用,redis常用指令,jedis使用,RDB和AOF持久化

    知识点梳理 课堂讲义 课程计划 1. REDIS 入 门 (了解) (操作)   2. 数据类型 (重点) (操作) (理解) 3. 常用指令   (操作)   4. Jedis (重点) (操作) ...

  2. Redis常用指令之string、list、set、zset、hash

    Redis之五大类型常用指令 redis的一些小知识 redis服务器端口默认是6379 在编译完成后的bin目录下启动服务端:redis-server 客户端连接操作:redis-cli -h lo ...

  3. Redis常用指令

    1.使用指令存储数据 不同数据类型的使用 1.String > 在以上指令中我们使用set指令向redis存进了一个数据类型为string,名为str1,值为123456.(如果你要问为什么,那 ...

  4. iOS 常用工具库LFKit功能介绍

    简介:LFKit包含了平时常用的category,封装的常用组件,一些工具类. 需要LFKit中所有自定义控件的pod 'LFKit/Component' 需要LFKit中所有category的pod ...

  5. Redis常用数据类型介绍、使用场景及其操作命令

    Redis常用数据类型介绍.使用场景及其操作命令 本文章同时也在cpper.info发布. Redis目前支持5种数据类型,分别是: 1.String(字符串) 2.List(列表) 3.Hash(字 ...

  6. docker创建image方法以及常用指令介绍

    docker -help    # 显示帮助 docker COMMAND -help    # 帮助信息更详细 docker start “容器名称”    # 启动一个或多个容器 docker s ...

  7. 新人成长之入门Vue.js常用指令介绍(一)

    写在前面 作为一个刚步入职场工作的新人,对于公司中所用的技术和框架基本上不懂,只能从最基础的开始做起,进入公司接触的第一个框架就是前端框架Vue.js,几个功能做下来,觉得Vue.js首先学习起来真的 ...

  8. 3.Nginx常用功能介绍

    Nginx常用功能介绍 Nginx反向代理应用实例 反向代理(Reverse Proxy)方式是指通过代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并且从内部网络服 ...

  9. Redis 4.0新功能介绍

    Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...

随机推荐

  1. 第二周<导学/分类>

    分类学习 分类算法各有不同 knn naivebyes regression dnn sklearn.linear_modlel 线性函数 sklearn.preprocessing 非线性函数 分类 ...

  2. 洛谷 P3950 部落冲突 树链剖分

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例1 输出样例1 输入样例2 输出样例2 输入样例3 输出样例3 说明 思路 AC代码 总结 题面 题目链接 P3 ...

  3. Effective Modern C++:08调整

    41:针对可复制的形参,在移动成本低且一定会被复制的前提下,考虑将其按值传递 class Widget { public: void addName(const std::string& ne ...

  4. 一文纵览EMAS 到底内含多少阿里核心技术能力

    申请阿里云EMAS,体验一站式移动研发平台,更多精彩尽在开发者会场 EMAS的整体定位是阿里巴巴移动技术对外输出的主窗口,沉淀了阿里巴巴近10年在移动互联网技术架构上的积累以及在一系列垂直场景中所实践 ...

  5. 【JZOJ4899】【NOIP2016提高A组集训第17场11.16】雪之国度

    题目描述 雪之国度有N座城市,依次编号为1到N,又有M条道路连接了其中的城市,每一条道路都连接了不同的2个城市,任何两座不同的城市之间可能不止一条道路.雪之女王赋予了每一座城市不同的能量,其中第i座城 ...

  6. python小练习--银行取款

    银行取款 今天练习的小程序: #!/usr/bin/env python #-*- coding:utf-8 -*- import time tag=True while tag: name=inpu ...

  7. 1.2开发文档简读,了解全貌.mp4

  8. Pycurl介绍

    pycurl — A Python interface to the cURL library Pycurl包是一个libcurl的Python接口.pycurl已经成功的在Python2.2到Pyt ...

  9. laravel 极验(Geetest) 让验证更安全。

    整理的有些仓促,在9月15号之后会更新更加详细更加全面的文档,供给大家参考,学习! 1.简述 在网站开发中使用频率最高的工具之一便是验证码,验证码在此也是多种多样,不过简单的图片验证码已经可以被机器识 ...

  10. iOS小技巧:用runtime 解决UIButton 重复点击问题

    http://www.cocoachina.com/ios/20150911/13260.html 作者:uxyheaven 授权本站转载. 什么是这个问题 我们的按钮是点击一次响应一次, 即使频繁的 ...