Redis的五大数据类型:

  1.string(字符串)

    string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

    string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

    string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

  2.hash(哈希,类似java里的Map) 

    Redis hash 是一个键值对集合。

    Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

    类似Java里面的Map<String,Object>

  3.list

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

  4.set 

    Redis的Set是string类型的无序集合。它是通过HashTable实现实现的, 

  5.zset

    zset(sorted set:有序集合)

    Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

哪里去获得redis常见数据类型操作命令    http://redisdoc.com/

0.Redis键(针对键的一些命令)

举例:

  (keys  *)(keys  k1)(keys   k2) (keys  k?)

  exists  keyName    判断某个key是否存在

  move  keyName  db  -->  将某个key 从当前库移除

  expire  keyName  秒钟:为给定的key设置过期时间

  ttl  keyName    查看还有多少秒过期,-1表示永不过期,-2表示已过期,过期生命周期就结束了,不存在了

  type  key  查看你的key是什么类型

1.Redis字符串(string)(单值单value)

  举例:

    set/get/del/append/strlen  (顾名思义)  

    Incr/decr/incrby/decrby,一定要是数字(字符串型的)才能进行加减

    getrange/setrange

      (获取指定区间范围内的值,类似between......and的关系从零到负一表示全部)

      设置指定区间范围内的值,格式是setrange keyName  具体值

      setrange k2 0 99 意思是从第一个数开始开始,将99替换进去,字符长度不会变化

      如:k2 原始的 value 是 12345,,setrange 0 99 之后 value 变为 99345

  

    setex(set with expire)  keyName  秒值/setnx(set if not exist)

      setex:设置带过期时间的key,动态设置

      setnx:只有在 key 不存在时设置 key 的值。

    mset/mget/msetnx

      mset(m:more):同时设置一个或多个 key-value 对。

      mget:获取所有(一个或多个)给定 key 的值。

      msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

    getset(先get再set)

      先 get 返回key的旧值,然后将 key 的值设为 value ,简单一句话,先get然后立即set

2.Redis列表(List)单值多value

  举例:

    lpush/rpush/lrange 通过push 来创建   list,lrange 查看指定的list 的 指定范围的 值

      LPUSH 和 RPUSH 进入 ‘栈 ’ 的 方向不同,同理 lpop 和 rpop 出 ‘栈’的方向不同

      如 :LPUSH 入栈顺序为 12345,,LPOP 出栈顺序为先出 5

     lpop/rpop

     lindex,按照索引下标获得元素(栈从上到下,索引值递增)  通过索引获取列表中的元素 lindex key index

     llen

     lrem keyName   删N个value

      (LREM list3 2 v1)从left往right删除2个值等于v1的元素,返回的值为实际删除的数量

      LREM list3 0 值,表示删除全部给定的值。零个就是全部值

     ltrim keyName 开始index 结束index,截取指定范围的值后再赋值给key

       Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

     rpoplpush 源列表 目的列表

      RPOPLPUSH list1 list2,,移除list1的最后一个元素,并将该元素添加到list2并返回

     lset keyName index value

      lset list2 0 5,,将 list2 的 第一个 元素 设置为5

     linsert keyName  before/after 值1 值2

      在list某个已有值的前后再添加具体值

    

    性能总结:Redis列表(List),它是一个字符串链表,left、right都可以插入添加;

    如果键不存在,创建新的链表;  如果键已存在,新增内容;  如果值全移除,对应的键也就消失了。

    链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

3.Redis集合(set)单值多value

  举例:

     sadd/smembers/sismember

     srem keyName value 删除集合中元素

     scard,获取集合里面的元素个数

     srandmember key 某个整数(随机出几个数) 

      从set集合里面随机取出2个

       如果超过最大数量就全部取出,

      如果写的值是负数,比如-3 ,表示需要取出3个,但是可能会有重复值。

     spop keyName 随机出栈

     smove key1   key2   在key1里某个值      作用是将key1里的某个值赋给key2

     数学集合类

      差集:sdiff   在第一个set里面而不在后面任何一个set里面的项   

      交集:sinter  多个集合 的 共同元素

      并集:sunion  多个集合中出现的 所有元素 (去重)

4.Redis哈希(Hash)KV模式不良,但V是一个键值对

  举例:

      hset/hget/hmset/hmget/hgetall/hdel  

     hlen    

     hexists key 在key里面的某个值的key

     hkeys/hvals

     hincrby/hincrbyfloat

     hsetnx    不存在就赋值,存在了无效

5.Redis有序集合zset(sorted  set)

  在set基础上,加一个score值。之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2

  举例:

     zadd/zrange     ZADD zset1 60 v1 70 v2 80 v3 90 v4 100 v5      ZRANGE zset1 0 -1 withscores

     zrangebyscore key 开始score 结束score  

      60  80     代表  60<= x<=80    ,,  (60   (80  代表    60<x<80

      后面还可以加上 limit 条件,,ZRANGEBYSCORE zset1 60 80 limit 1 2  ,,有点像分页

     zrem keyName value值,作用是删除元素,格式是zrem   keyName 项的值,项的值可以是多个

     zcard/zcount keyName score区间/zrank keyName values值,作用是获得下标值/zscore key 对应值,获得分数

      zcard :获取集合中元素个数,,zcount :获取分数区间内元素个数,zcount keyName 开始分数区间 结束分数区间

      zrank: 获取value在zset中的下标位置  zscore:按照值获得对应的分数

     zrevrank key values值,作用是逆序获得下标值

     zrevrange

     zrevrangebyscore  key 结束score 开始score

      zrevrangebyscore zset1 90 60 withscores    分数是反着来的

最新文章

  1. iOS之UI组件整理
  2. 简单封装数据请求(iOS)
  3. IP验证正则表达式
  4. Access字段类型“查阅向导”
  5. WPF 创建自定义窗体
  6. 乐视云计算基于OpenStack的IaaS实践
  7. pycharm去掉拼写检查
  8. 从运营商小广告到HTTPS
  9. [iOS Animation]-CALayer 性能优化
  10. jquery on()动态绑定元素的的点击事件无反应的问题记录
  11. Struts2数据传输的背后机制:ValueStack(值栈)
  12. 浅析ajax原理与用法
  13. 驰骋开源的asp.net工作流程引擎java工作流 2015 正文 驰骋工作流引擎ccflow6的功能列表
  14. 使用jquery.pjax实现SPA单页面应用
  15. Linux命令之mount挂载
  16. 解题:WC 2006 水管局长
  17. MySQL学习笔记:limit
  18. Winform中用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity
  19. CentOS 6.9配置网卡IP/网关/DNS命令详细介绍及一些常用网络配置命令(转)
  20. [JLOI2015]管道连接(斯坦纳树)

热门文章

  1. java数据类型,取值范围,引用类型解析
  2. linux简单命令1
  3. mysql逻辑备份mydumper
  4. (五)Centos之目录处理命令
  5. OpenCV直方图(直方图、直方图均衡,直方图匹配,原理、实现)
  6. Windows 10 下使用 MinGW-w64 编译 OpenCV-4.1.1
  7. Matlab绘制阶梯形图
  8. php 因循环数据 赋值变量 占用内存太大 提示错误
  9. MySQL5.7.9安装与配置优化
  10. Haystack--基于Django的全文检索框架