zoukankan      html  css  js  c++  java
  • redis小结

    Redis

    切换到redis的目录

    启动:./redis-server

    关闭:killall redis-server

    Redis的数据类型:

    String字符  list链表  set集合(无序)  Sort Set排序(有序) hash数据类型

    string类型的数据操作

    redisstring可以包含任何数据。包括jpg图片或者序列化的对象。

    单个value值最大上限是1G字节。

    set key value 设置key对应的只为string类型的value

    set key  value  EX  过期秒数

    set key  value  PX  过期毫秒数

    get key 获取key的值

    mset key1 value1 ... keyN valueN 一次设置多个key的值

    mget key1 key2 ... keyN 一次获取多个key的值

    Key的操作

    给被存储信息取的的一个“名字”

    >exists key 测试指定key是否存在

    >del key1 key2 ... keyn 删除指定key

    >type key 返回key的类型

    >keys pattern 返回指定模式匹配的所有key

      keys col* 获得所有名字为col开始的key的信息

      keys  *                      获得当前redis数据库全部的key

    >rename oldkey  newkey 修改名字

    >dbsize 返回当前数据库key的数量

    >expire key seconds   key指定过期时间

    >ttl key 返回key的剩余生命时间

    >select dbindex 选择数据库

    redismysql数据库相似的地方是有多个数据库供操作

    >move key dbindex key从当前数据库移动到指定数据库

    >flushdb 删除当前数据库中所有key

    >flushall 删除所有数据中的所有key

    数据类型list链表

    链表使用特点:

    • 数据进入链表后有严格的先后顺序关系
    • 允许相同的元素内容重复进入链表
    • 链表可以在头部进入数据、尾部出数据,也可以在头部进、头部出[与栈数据结构一致]
    • 链表中存储的单元数据都是”String字符串”类型

    lpush key  string   key对应的链表的头部添加字符串元素

      lpush(left push)从链表左侧添加单元数据

      可以多次调用,代表给链表添加多个数据

    rpop key list的尾部删除元素,并返回删除的元素

      rpop(right pop)从链表的右侧删除数据

    llen key 返回key对应list链表的长度

      llen(list length)

    key不存在返回0

    如果key对应类型不是list返回错误

    lrange key start end 返回指定区间内的元素,下标从0开始

      lrange(left range)从链表的左侧获得范围内的元素出来,范围下标从0开始

    rpush key string 同上,在尾部添加元素

      rpush(right push)从链表右侧添加单元数据

    lpop key list的头部删除元素,并返回删除元素

      lpop(left pop)从链表的左侧删除数据

    ltrim key start end     截取list,保留指定区间内元素

      ltrim(left trim),从左侧做截取保留

    Set 集合类型

    特点:

    • 内部数据没有先后顺序(不同于list链表)
    • 内部各个元素彼此都是唯一的,不能重复(不同于list链表)
    • 集合中的各个元素类型都是String类型
    • 除了基本的添加,删除的数据操作,还包括,取交、并、差集合的数据操作

    sadd key member [member...] 添加一个string元素到key对应的set集合中

    成功返回1

    如果元素存在,返回0,操作无效

    可以调用多次,给一个集合添加多个元素

    srem key member [remove]key对应的set中移除给定元素

    smove p1 p2 member p1集合中移除member成员后添加给p2集合

    scard key 返回集合的元素个数

    sismember key member   判断member是否在集合中

    sinter key1 key2 ... keyN 返回所有给定key的交集

    sunion key1 key2 ... keyN 返回所有给定key的并集

    sdiff key1 key2 ... keyN 返回所有给定key的差集

      内部有key1的元素,不会有key2keyN的任何元素

    smembers key 返回key对应集合的全部元素

      list中的lrange方法相似

    Sort set排序集合

    set一样sorted set也是string类型元素的集合,

    Sort  Set类型 可以想象成是 setlist结合的排序集合类型

    sort set集合内部的每个元素都会关联一个。该权是衡量元素顺序的标准(生活中权可以是身高、分数、商品热卖数量)

    通过权可以有序的排列获取集合中的元素

    sort set中每个元素分为两部分:值、权

    zadd key score()  member()  scoreN memberN ..

    添加元素到集合

    元素在集合中存在则更新对应的score

    该方法操作元素,存在就更新,不存在就添加

    一次性可以设置1个或多个元素

    zrem key member (remove)删除指定元素,1表示成功,0表示不存 在该元素

    zrange key start end 返回集合中指定区间的元素,

    (范围是权值由小到大排序的序号,序号是从0 )

    zrevrange key start end (reverse反转)

    返回集合中指定区间的元素,

    (范围是权值由大到小排序的序号,序号是从0 )

    zcard key    返回集合中元素个数

    zremrangebyrank key start stop 删除集合中排名在给定区间的元素

    (范围是权值由小到大排序的序号,序号是从0 )

    Hash数据类型

    hash类型存储信息的样子与数据表的单条记录非常相似

    设置一个key后,可以为该key设置多个field域名  field域名的值

    hsetHSET key field value  每次设置一个域

    hmsetHMSET key field value [field value ...]  允许一次性设置多个域

    hgetHGET key field 获得一个key的一个域的信息

    hmgetHMGET key field [field ...]  获得一个key的多个域的信息

    Hash快照持久化:

    文档中所写内容案例:

    save 900 1 #900 (15分钟)内如果超过 1 key 被修改,则发起快照保存

    save 300 10      #300(5分钟)超过10key被修改,发起快照

    save 60 10000    #60(1分钟)超过10000key被修改,发起快照

    linux终端手动发起快照持久化

     ./redis-cli  [-h 主机名ip  -p 端口号码]  bgsave

     ./redis-cli  -h  ip地址  -p 端口  bgsave

    Redis设置密码:

    ./redis-cli  -a  密码      //设置连接密码

    ②登录到redis操作终端通过auth命令设置连接密码

    > auth  密码

    Redis总结:

    1. Redis各种数据类型

    String字符类型

    Set  get  mset  mget

    (1) List链表[应用在最新商品展示]:

    lpush  lrange   rpop   llen   ltrim   rpush  lpop

    (2) Set集合[应用在促销商品]:

    sadd  srem  smove  scard   sismember  sinter  sunion  sdiff  smembers

    (3) SortSet排序集合[应用在热卖商品]:

    zadd  zrem  zrange  zrevrange  zcard  zremrangebyrank

    (4) Hash:  

    hset  hget  hmset  hmget

    1. 持久化

    (1) rdb 快照  dump.rdb    频率:15分钟  5分钟  1分钟    bgsave

    (2) aof  追加    bgrewriteaof

    远程操作:./redis-cli  -h  ip地址  -p 端口  -a  密码   bgsave/bgrewriteaof

    PHP操作redis

    ① 实例化对象

    $redis = new Redis();

    ② 连接redis服务

    //临时连接,长时间不操作,则会自动断开

    //该连接适合”浏览器的http”的一次性请求

    $redis -> connect('192.168.18.121',6379);

    //长连接,客户端不手动发起关闭,则不会自己关闭

    //服务器后台使用,该程序24小时不中断执行,就适合使用该长连接

    $redis -> pconnect('192.168.18.121',6379);

    ③设置连接密码

    $redis -> auth(密码);

    ④选择数据库[默认操作0标号数据库]

    $redis -> select(0-15);

    string操作

    $redis->set(key, value);

    $redis->get(key);

    $redis->mset([key=>value,key=>value,key=>value...]);

    $redis->mget([key1,key2,key3]);

    list相关操作

    lPush

    $redis->lPush(key, value);

    rPush

    $redis->rPush(key, value);

    lPop/rPop

    $redis->lPop('key');

    lRange

    $redis->lRange('key1', 0, -1);

    lTrim

    $redis->lTrim('key', start, end);

    SET操作相关

    sAdd

    $redis->sAdd(key , value);

    sRem

    $redis->sRem('key1', 'set2');

    sMove

    $redis->sMove(seckey, dstkey, value);

    sIsMember

    $redis->sIsMember(key, value);

    $redis->sCard('key')

    sInter

    $redis->sInter(array('key1', 'key2')) or $redis->sInter('key1', 'key2')

    sUnion

    $redis->sUnion('s0', 's1', 's2');

    zsetsorted set)操作相关

    $redis->zAdd('key', 5, 'val5');

    $redis->zRange('key', 0, -1);

    $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);

    zRem(key, member) :删除名称为keyzset中的元素member

    $redis->zAdd('key', 10, 'val10');

    $redis->zDelete('key', 'val2');

    $redis->zRange('key', 0, -1);

    $redis->zAdd('key', 10, 'val10');

    $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);

    zRemRangeByScore, zDeleteRangeByScore

    $redis->zRemRangeByScore('key', start, end);

  • 相关阅读:
    【结对编程收获】
    【第二次个人作业】结对作业Core第一组:四则运算生成PB16061082+PB16120517
    【第七周读书笔记】读《计算机系统详解》
    【第五周课堂作业】创新案例分析
    【第六周读书笔记】计算机体系结构读后感
    个人总结——马睿淳
    团队项目心得(6.15)
    团队项目心得
    《代码大全》读书笔记——第九周
    《我是一只IT小小鸟》(续)读书笔记——第八周
  • 原文地址:https://www.cnblogs.com/lovecatcher/p/9067769.html
Copyright © 2011-2022 走看看