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的一个子集。

  • 相关阅读:
    内容页超连接关键词的完美实现
    鼠标经过文字链接时出现漂亮的提示层
    简单的jQuery检测注册用户名
    触发Repeater中的Dropdownlist的SelectedIndexChanged如何获得Repeater的当前行
    读取XML的节点属性并绑定到ListBox
    第十八章 6string型字符串的替换 简单
    第十八章 2string字符串 简单
    第十七章 特殊成员_函数指针也可以做为参数 简单
    第十七章 特殊成员_类的函数指针 简单
    第十七章 特殊成员_成员函数指针数组 简单
  • 原文地址:https://www.cnblogs.com/yaohong/p/7893802.html
Copyright © 2011-2022 走看看