zoukankan      html  css  js  c++  java
  • redis使用

    一、基础

    1、连接客户端命令:redis-cli

    2、退出客户端命令:exit

    3、redis中有16个库,0库和1库是不能修改的,各个库之间是隔离的

     4、查看所有key值keys *

    二、String类型

    1、set k1 hello

      get k1

    2、nx:当k1不存在时可以进行设置,k1存在时会返回nil

      set k1 ooxx nx,下图中k1已经存在

     使用场景:分布式锁

         多线程下去单线程redis中抢占某一key值,给key1设置成功,就抢到了锁

    3、xx:当k2存在时可以进行设置,k2不存在时返回nil

      set k2 hello xx,下图中k2不存在,返回nil

    注意:nx只能新建,xx只能更新 

    4、多key设置:mset k3 a k4 b

      将k3value设置为a,k4设置为b

    5、redis中有正向索引和逆向索引

     

     上图为append追加、getrange截取

     上图为根据偏移量替换

    6、获取value长度:STRLEN k1

    7、获取key对应value类型:type k1

    8、INCR加一、INCRBY加固定值、DECR减一、DECRBY减固定值

     9、GETSET k1 mashibing

    将k1的值变为mashibing并且返回原先k1的值

    GETSET与一次get一次set的区别

      一次get、一次set相当于在通信上发送了两个包

      而GETSET相当于一次只发送了一个包完成了等同于一次get一次set的操作,减少了一次io

    10、MSETNX批量set伴随nx

     11、二进制安全:redis中存得是字节

      只要存的字节流,没有取出字节按某一编码集转换,换言之双方有相同的编解码,数据就不会被破坏(每种语言对数据类型的理解不一样,可能导致解码之后溢出等问题)

    三、list类型

     key中有头信息和尾信息,分别指向双向链表的头和尾

    1、lpush k1 a b c d e f

      从左向list中存数据,放入的数据顺序为f e d c b a

    2、rpush k1 a b c d e f

      从右向list中推数据

    3、lpop k1

      从最左面弹数据

    4、rpop k1

      从最右面弹数据

    5、lrange k1 0 -1 取出list中规定范围的值

    6、lindex k1 2 取出list中规定下标的值

     7、lset 将规定下标的值替换成目标值

     8、lrem k3 2 a

    k3:key值  2:移除个数  a:移除的元素

     9、linsert k3 before/after 6 a

    k3:key值  bafore:在元素前  after:在元素后  6:value中的值  a:要插入的元素

     10、ltrim k4 0 -1

    k4:key值  0:开始范围  -1:结束范围

    ltrim删除0到-1之外的元素

    四、Hsah

    value中按照key-value的形式存值

     1、基础操作

     五、Set

    set会进行去重

    1、新增元素:sadd k1 21  1  2  3  4  5  1

    2、查询元素:smembers k1

      结果:21 1 2 3 4 5

    3、移除元素:srem k1 2  3

      2  3是value中元素

    4、可以做交集、并集、差集等运算

    5、srandmember key count

      正数:取出一个去重的结果集(不能超过已有集)

      负数:取出一个可重复的结果集,一定满足你要的数量

      0:不返回

    应用场景一:粉丝送福利(粉丝足够),set中存放粉丝的名单,送三个礼物

      srandmember key 3:抽出三个粉丝不重复

      srandmember key -3:粉丝可能重复

    应用场景二:奖品足够,粉丝数少。value中存放粉丝信息

      srandmember key -20:负数足够大就可以(粉丝有重复)

    应用场景三:公司年会抽奖,进门发一个带有数字的卡片,这时一个数字不能重复出现

      spop k1:每次会从已抽到过剩下的卡片中随机抽取

    六、ZSet

    1、要给每个元素分配分值

     2、排序是如何实现的,增删改查的速度?

    skip list结构:跳跃表    牺牲存储空间来获取查询效率,随机造层

     从最高层开始,逐层进行对比。在最终插入后修改指针

      

    作者:http://cnblogs.com/lyc-code/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权力。

  • 相关阅读:
    Java 开源博客 Solo 2.5.0 发布
    redis集群部署及踩过的坑
    开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐!
    Java9 新特性 详解
    eclipse 安装教程
    博客园代码高亮插件(类似csdn的代码插入)
    【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结
    软件测试学习视频 分享
    Oracle imp exp 导入导出 执行脚本
    在Ubuntu 15下搭建V/P/N服务器pptpd安装和配置
  • 原文地址:https://www.cnblogs.com/lyc-code/p/14998422.html
Copyright © 2011-2022 走看看