zoukankan      html  css  js  c++  java
  • key-value数据库-Redis

    1.简介

    Redis是完全开源的ANSI C语言编写、遵守BSD协议,高性能的key-value数据库。

    1.1特点

    • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    • Redis支持数据的备份,即master-slave模式的数据备份。

    1.2优势

    • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
    • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
    • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

    2.安装

     2.1windows安装

       在  https://github.com/MicrosoftArchive/redis/releases下下载Redis-x64-3.2.100.zip。

    将下载的包移动到c盘下,新建redis文件夹,将压缩包在redis文件夹下解压。

    打开一个 cmd 窗口 使用cd命令切换目录到 C: edis 运行 redis-server.exe redis.windows.conf 。

    C:
    edis> redis-server.exe redis.windows.conf
                    _._
               _.-``__ ''-._
          _.-``    `.  `_.  ''-._           Redis 3.2.100 (00000000/0) 64 bit
      .-`` .-```.  ```/    _.,_ ''-._
     (    '      ,       .-`  | `,    )     Running in standalone mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
     |    `-._   `._    /     _.-'    |     PID: 11604
      `-._    `-._  `-./  _.-'    _.-'
     |`-._`-._    `-.__.-'    _.-'_.-'|
     |    `-._`-._        _.-'_.-'    |           http://redis.io
      `-._    `-._`-.__.-'_.-'    _.-'
     |`-._`-._    `-.__.-'    _.-'_.-'|
     |    `-._`-._        _.-'_.-'    |
      `-._    `-._`-.__.-'_.-'    _.-'
          `-._    `-.__.-'    _.-'
              `-._        _.-'
                  `-.__.-'
    
    [11604] 24 Nov 11:04:00.253 # Server started, Redis version 3.2.100

    这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。

    切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。

    设置键值对 set myKey abc

    取出键值对 get myKey

    3.配置

    3.1获取配置

     #CONFIG GET *

    3.2便捷配置

    #CONFIG SET loglevel "notice"

    4.数据类型

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

    5.命令

     5.1基本命令

    启动redis客户端:redis-cli

    检测redis服务是否启动:ping  -----》返回pong

     连接远程:redis-cli -h 127.0.0.1 -p 6379 -a "mypass"

     5.2键(key)

     增:SET keyname redis  ---key后面跟key的名称和key的值

     删:del keyname

     改:EXPIRE yhkey 60  ---修改key的过期时间、EXPIRE以秒计算、  PEXPIRE 以毫秒计算   

           ttl myname -----修改key永不过期

           rename key yhkey9

    查:keys * 查询所有key

          keys  yh* 过滤出包含yh的key

          exists keyname  判断key是否存在

           pttl mekey查找key的剩余时间

     5.3Redis-String

    增:SET keyname2 "hello myname is yaohong, what is your name?"

    查:GET keyname2

    截取字符串:GETRANGE keyname2 2 14

    同时获取多个字符串:MGET yhkey1 yhkey3

     5.4Redis-Hash

    增:hmset(同时将多个file-value设置到hash表中)、hget

    删:hdel

    查:hget、hgetall、hkey获取hash表中所有域(file)、

      hmget myhash file1 file2 file3(返回哈希表中,一个或多个给定字段的值)

          hvals获取哈希表中所有值

     判:hexists 判断是否存在

           hlen获取file个数

    5.5Redis-List

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

    增:lpush(头部插入元素)、rpush(尾部插入元素)

    删:lpop(移除列表第一个元素)、rpop(移除列表最后一个元素)、lrem keyname count value(count大于0从头部开始删除value元素)

    查:llen(获取列表长度)、lreng key start stop(获取start到stop的元素)

    改:lset、rset

    5.6Redis-Set

    增:sadd、

          sunionstore  myset myset1 myset2  命令将给定集合的并集存储在指定的集合 myset中

    删:spop移除集合中随机数

          srem按值移除集合中元素

    查:smembers、scard(获取成员数)、

          sdiff(列出第一个集合拥有,第二个集合没有的元素)、

          sdiffstore(将第一个集合拥有,第二个集合没有的元素保存到第三个集合中)、

          sinter(列出两个集合的交集)

          smembers列出集合所有成员

    改:smove  myset1 myset2 "key1"   将key1从myset1移到myset2

    判:sismember 判断元素是否是key的成员

    5.7Redis-ZSet

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

    增:zadd keyname scoren value

    删:zrem keyname nember 移除有序集合中的一个或多个成员

          zremrangebylex key min max 移除有序集合中给定的字典区间的所有成员。

          zremrangebyrank key start stop  移除有序集合中给定的排名区间的所有成员

          zremrangebyscore key min max  移除有序集合中给定的分数区间的所有成员

    查:zcard 获取集合的成员数

          zcount key min max 计算在有序集合中指定区间分数的成员数 

          zrange key start stop WITHSCORES 通过索引区间返回有序集合成指定区间内的成员

    5.8事务

    Redis 事务可以一次执行多个命令

    开始事务:MULTI

    执行事务:EXEC

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

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

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

    5.9脚本

    Eval 命令使用 Lua 解释器执行脚本。

    5.10服务器

    Redis 服务器命令主要是用于管理 redis 服务。

    统计参数:INFO

    重置 INFO 命令中的某些统计数据:config resetstat

    键数:dbsize

     删除所有key:flushall

    删除当前数据库key:flushdb

    异步保存数据到硬盘:save

    6.Redis高级

    6.1Redis 数据备份与恢复

    备份:save

    恢复:1:将生成的rdb文件移动到 redis 安装目录(执行config get dir)并启动服务即可

    创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。

    6.2Redis 安全

    设置密码:config set requirepass "itnihao"
    auth itnihao 获取密码:CONFIG get requirepass

    6.3Redis 性能测试

    6.4Redis 客户端连接

    查看最大连接数:config get maxclients

    设置最大连接数:redis-server --maxclients 100000

    6.5Redis 管道技术

    Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

    6.6Redis 分区

    分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。

  • 相关阅读:
    [Luogu P3626] [APIO2009] 会议中心
    杭电 1869 六度分离 (求每两个节点间的距离)
    杭电 1874 畅通工程续 (求某节点到某节点的最短路径)
    最短路径模板
    杭电 2544 最短路径
    POJ 1287 Networking (最小生成树模板题)
    NYOJ 1875 畅通工程再续 (无节点间距离求最小生成树)
    POJ 2485 Highways (求最小生成树中最大的边)
    杭电 1233 还是畅通工程 (最小生成树)
    杭电 1863 畅通工程 (最小生成树)
  • 原文地址:https://www.cnblogs.com/yaohong/p/7893802.html
Copyright © 2011-2022 走看看