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    分数是反着来的

3.Redis数据类型的更多相关文章

  1. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  2. redis数据类型及使用场景

    Redis数据类型  String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令:  set,get,decr,incr,mge ...

  3. Redis数据类型介绍

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

  4. redis数据类型

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

  5. Redis-cluster集群【第一篇】:redis安装及redis数据类型

    Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...

  6. Lua 数据类型和 Redis 数据类型之间转换

    当 Lua 通过 call() 或 pcall() 函数执行 Redis 命令的时候,命令的返回值会被转换成 Lua 数据结构. 同样地,当 Lua 脚本在 Redis 内置的解释器里运行时,Lua ...

  7. redis数据类型-散列类型

    Redis数据类型 散列类型 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他 ...

  8. redis数据类型-字符串类型

    Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...

  9. redis笔记总结之redis数据类型及常用命令

    三.常用命令 3.1 字符串类型(string) 字符串类型是Redis中最基本的数据类型,一个字符串类型的键允许存储的数据的最大容量为512MB. 3.1.1 赋值与取值: SET key valu ...

  10. redis介绍、安装、redis持久化、redis数据类型

    1.redis介绍  2.安装管网:https://redis.io/下载:wget -c http://download.redis.io/releases/redis-4.0.11.tar.gz解 ...

随机推荐

  1. Windows 10、Ubuntu 18.04 双系统 双硬盘 安装经验总结

    首先说明,我假设读者懂得分区.安装系统,所以不再深入讨论具体操作. 如果需要手把手教程,建议先参考其它Windows中加装Linux的相关文章. 网上其它文章.教程的常见问题是,各家机器配置不一样,安 ...

  2. Jenkins增加日志查看内容. 如何查看Jenkins插件的日志?

    进入Jenkins日志项 添加新的日志记录 把插件的GroupID信息填入 对应的源代码 日志生成代码 执行插件,即可查看插件里的日志输出

  3. golang web框架 beego 学习 (五) 配置文件

    app.conf: appname = gowebProject httpport = runmode = dev copyrequestbody = true [db] host= localhos ...

  4. 用Inno setup制作以管理员权限启动的安装包

    inno setup制作的安装包,默认是不需要管理员权限启动的.我们制作安装包,往往需要做一些设置工作,这些设置工作可能用到管理员权限.使用Resource Hacker修改inno setup资源, ...

  5. 基于Spring Boot的可直接运行的分布式ID生成器的实现以及SnowFlake算法详解

    背景 最近对snowflake比较感兴趣,就看了一些分布式唯一ID生成器(发号器)的开源项目的源码,例如百度的uid-generator,美团的leaf.大致看了一遍后感觉uid-generator代 ...

  6. [翻译向] 当flush privileges生效时

    #前言: 最近频繁在mysql权限控制这里栽跟斗,在翻阅了一些资料之后,简单地翻译一下官网关于flush privileges的描述,抛砖引玉.   #翻译正文: If the mysqld serv ...

  7. 日常工作问题解决:centos7下使用yum安装软件报yum.pid锁定

    问题描述: 在centos7下使用yum进行软件安装时报yum.pid已经被锁定,如下所示: [root@centos7-129 ~]# yum -y install dhcp 已加载插件:faste ...

  8. linux自由软件安装 ./config, make的理解 -- ongoing

    在linux系统中安装软件的其中一种:源码安装的方法是,先输入./configure,然后输入make,最后make install.或许有人留意到没有,这些软件的根目录中开始是没有Makefile的 ...

  9. 《Tsinghua os mooc》第11~14讲 进程和线程

    第十一讲 进程和线程 进程 vs 程序 程序 = 文件 (静态的可执行文件) 进程 = 执行中的程序 = 程序 + 执行状态 进程的组成包括程序.数据和进程控制块 同一个程序的多次执行过程对应为不同进 ...

  10. Error Retries and Exponential Backoff in AWS

    Error Retries and Exponential Backoff in AWS https://docs.aws.amazon.com/general/latest/gr/api-retri ...