一、redis简介:
  1. reids 也是一个 key-value 存储系统,更加确切地说,它已经是一个非关系型数据库。

  2. 关系型。
    SQL语言。
  3. 非关系型。
    key - value。

  4. 数据类型。
    字符串。
    哈希
    列表
    集合
    有序集合。

二、安装
  linux
    1. 解压
      tar xzf redis-3.2.9.tar.gz
    2. 进入目录
      cd redis-3.2.9
    3. 编译
      make
    4. 启动
      二进制文件是编译完成后在src目录下,通过下面的命令启动Redis服务:
      src/redis-server 或者 cd src && ./redis-server [redis.conf]
    5. 使用
      你可以使用内置的客户端命令redis-cli进行使用:
      src/redis-cli
    6. 配置
      redis.conf
三、安装 php 扩展
  1. 下载
    s
  2. 解压
    unzip phpredis.zip
  3. 进入目录
    cd /phpredis
  4. 执行 phpize
    /usr/local/bin/phpize
  5. 配置
    ./configure --with-php-config=/usr/local/php/bin/php-config
  6. 编译安装
    make && make install
  7. 修改 php.ini 配置文件
    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20151012/"
    extension="redis.so";
  8. 重启apache
    /usr/local/apache2/bin/apachectl restart
四、使用 php 操作
  数据类型
    1. string
      增加
        set('索引','值')    // 设置值。
        setex        // 设置有生命周期的值
        mset('数组')    // 批量设置值
        setnx('索引','值') // 设置新值
      删除
        delete// 删除值。
      修改
        set('索引','值')    // 修改值
        incr('索引')      // 增加值
        incrby('索引','步进值')  // 步进递加值
        decr('索引')      // 递减值
        decrby('索引','步进值')  // 步进递减值
      获取
        get('索引')// 获取值
        mget('数组')// 批量获取值
    2. list,链表,列表。
      增加
        lpush(‘表名’,‘值’)// 从左添加值
        rpush(‘表名’,‘值’)// 从右添加值
      删除
        lpop(‘表名’)// 从左弹出
        rpop(‘表名’)// 从右弹出
        lrem(‘表名’)// 删除几个
      修改
        lset(‘表名’,第几个,‘要修改的值’)// 根据索引修改,从0开始
        lset(‘表名’,负第几个,‘要修改的值’)// 根据索引修改,倒数,从-1开始
        rpoplpush(‘弹出表’,‘填入表’)// 弹出最后一个元素到另一个新的列表中
      查询
        lindex(‘表名’,索引号数字)// 根据索引查询
        lrange(‘表名’,开始索引号,结束索引号)// 从 start 到 end 结束。
        lrange(‘表名’,0,-1)// 获取所有元素
        lsize(‘表名’)// 查询列表中元素的个数
    3. set 无序集合
      增加
        sadd(‘集合名’,‘值1’,‘值2’,‘值n’)// 添加集合
      删除
        srem(‘集合名’,‘值’)// 删除集合中的元素
      修改
        smove(‘集合1’,‘集合2’,‘值’)// 移动集合中的元素到另一个集合中。
      查询
        smembers(‘集合名’)// 获取集合中所有的元素
        ssize(‘集合名’)// 获取集合中元素的个数
        srandmember(‘集合名’)// 从集合中随机获取元素。
        sinter(‘集合1’,‘集合2’)// 交集
        sunion(‘集合1’,‘集合2’)// 并集
        sdiff(‘集合1’,‘集合2’)// 差集
        sismember(‘集合名’,‘值’)// 检测集合中元素是否存在
    4. zset 有序集合
      增加
        zadd(‘集合名’,分数,‘值’)// 添加集合
      删除
        zrem(‘集合名’,‘值’)// 删除集合中的一个元素
      修改
        zincrby(‘集合名’,步进值,‘值’)// 提高分数
      查询
        zrange(‘集合名’,0,-1)// 获取集合中的所有元素
        zrevrange(‘集合名’,0,-1)// 获取集合中的所有元素,倒数。
        zrangebyscore(‘集合名’,起始分数,终止分数)// 根据分数范围获取元素,并取几个。
        zrevrangebyscore('z1', 10, 50, ['withscores'=> true, 'limit'=> [0, 3]]// 根据分数范围获取元素,并取几个。
        zcount(‘集合名’,起始分数,终止分数)//统计分数范围内的元素个数
        zsize(‘集合名’)// 获取集合中元素的个数
        zscore(‘集合名’,‘值’)// 获取某个元素的分数
        zrank(‘集合名’,‘值’)// 获取某个元素的排名,从0开始算起。
        zrevrank(‘集合名’,‘值’)// 获取某个元素排名,倒数
    5. hash 哈希
      增加
        hset(‘哈希名’,‘索引’,‘值’)// 设置值
        hmset(‘哈希名’,数组)// 批量设置值
        hincrby(‘哈希名’,‘索引’,步进值)// 递加值
      删除
        hdel(‘哈希名’,‘值’)// 删除值
      修改
        hset(‘哈希名’,‘索引’,‘值’)// 修改值
      查询
        hget(‘哈希名’,‘索引’)// 获取值
        hmget(‘哈希名’,数组)// 批量获取值
        hgetall(‘哈希名’)// 获取所有值
        hlen(‘哈希名’)// 获取个数
        hkeys(‘哈希名’)// 获取所有键。
        hvals(‘哈希名’)// 获取所有值
        hexists(‘哈希名’,‘索引’)// 检测键名是否存在
    6. 通用操作
      select(数据库编号)// 选择数据库
      flushdb// 清空当前数据库
      flushAll// 清空所有数据库
      set// 设置值
      expire(‘索引’,时间)// 添加生命周期。
      del// 删除值
      ttl(‘索引’)// 获取生命周期
      exists(‘索引’)// 检测键名是否存在
      keys(‘*’)// 获取所有键

      keys(‘name*’)

      keys(‘*name’)

【redis】redis的更多相关文章

  1. 【NoSql】Redis

    [NoSql]Redis 一. 文档 1. 官网 2. Windows 安装包 3. C# Driver a. ServiceStack.Redis 最新版本是收费的 b. StackExchange ...

  2. 【python】redis基本命令和基本用法详解

    [python]redis基本命令和基本用法详解 来自http://www.cnblogs.com/wangtp/p/5636872.html 1.redis连接 redis-py提供两个类Redis ...

  3. 【redis】redis的bind配置

    原文:[redis]redis的bind配置   在配置文件redis.conf中,默认的bind 接口是127.0.0.1,也就是本地回环地址.这样的话,访问redis服务只能通过本机的客户端连接, ...

  4. 【redis】redis基础命令学习集合

    写在前面 Redis是一个高速的内存数据库,它的应用十分广泛,可以说是服务端必学必精的东西.然而,学以致用,无用则无为.学了的东西必须反复的去用,去实践,方能有真知.这篇文章记录了我在redis学习过 ...

  5. 【redis】redis应用场景,缓存的各种问题

    如果你还不知道redis的基本命令与基本使用方法,请看 [redis]redis基础命令学习集合 缓存 redis还有另外一个重要的应用领域——缓存 引用来自网友的图解释缓存在架构中的位置 默认情况下 ...

  6. 【Redis】Redis Sentinel 哨兵模式搭建

    Redis Sentinel介绍 Redis Sentinel是Redis的官方高可用性解决方案 Redis Sentinel为Redis提供高可用性.实际上,这意味着使用Sentinel可以创建一个 ...

  7. 【Redis】redis各类型数据存储分析

    一.简介和应用 Redis是一个由ANSI C语言编写,性能优秀.支持网络.可持久化的K-K内存数据库,并提供多种语言的API.它常用的类型主要是 String.List.Hash.Set.ZSet ...

  8. 亿级流量场景下,大型缓存架构设计实现【1】---redis篇

    *****************开篇介绍**************** -------------------------------------------------------------- ...

  9. 【Redis】Redis cluster集群搭建

    Redis集群基本介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation. Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行 ...

  10. 【转】Redis学习---哈希结构内存模型剖析

    [原文]https://www.toutiao.com/i6594624365906625032/ 概述 在前文<Redis字符串类型内部编码剖析>之中已经剖析过 Redis最基本的 St ...

随机推荐

  1. 深入理解React key

    一 react 组件元素的 diff 算法 二 key 的理解 概述 react 中的key 属性,它是一个特殊的属性,它的出现不是给开发者用的(例如你为一个组件设置key之后不能获取组件的这个key ...

  2. Java注解 看这一篇就够了

    注解 1.概念 注解:说明程序的.给计算机看的 注释:用文字描述程序的.给程序员看的 注解的定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性 ...

  3. java 泛型简介(转载)

    原文出处: absfree 1. Why ——引入泛型机制的原因 假如我们想要实现一个String数组,并且要求它可以动态改变大小,这时我们都会想到用ArrayList来聚合String对象.然而,过 ...

  4. 五分钟了解Consul

    Hi,大家好,我叫consul,翻译成中文叫做“领事”,其实我更喜欢叫自己为中介,因为我觉得自己做的事情和房产中介非常像.比如说想要卖房的房东到我这边登记,我将房屋信息登录到我的表格中(服务注册),有 ...

  5. Ruby中的Hash(哈希),你可以理解为字典

    原文链接 以下代码在Ruby 2.5.1中编译通过 定义 myHash = Hash.new myHash1 = Hash["key1" => 100, "key2 ...

  6. System.Text.Json 序列化对所有 JSON 属性名称使用 camel 大小写

    asp.net core3.x 新增的序列号接口System.Text.Json 序列化时,如果要对所有 JSON 属性名称使用 camel 大小写 将 JsonSerializerOptions.P ...

  7. VScode配置CMD本地运行环境(2.0)

    VScode配置CMD本地运行环境(2.0) 官方Task.json说明 完整的Task.json配置信息 Task.json预定义变量 看了很多网上的教程都说需要下载VScode的python插件, ...

  8. Django 支付宝付款接口的使用

    我们在开发的过程中经常会碰到调用微信或者支付宝接口进行付款,付款完成之后,如果用户绑定了我的账号,我只要有活动了,就要给这个关注我的用户推动消息,让用户知道,比如说,我们经常会关注一些公众号,然后这些 ...

  9. POJ3352 Road Construction Tarjan+边双连通

    题目链接:http://poj.org/problem?id=3352 题目要求求出无向图中最少需要多少边能够使得该图边双连通. 在图G中,如果任意两个点之间有两条边不重复的路径,称为“边双连通”,去 ...

  10. leetcode之820. 单词的压缩编码 | python极简实现字典树

    题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...