zoukankan      html  css  js  c++  java
  • redis--数据类型

    redis支持五种数据类型:

    1. string(字符串)
    2. hash(哈希)
    3. list(列表)
    4. set(集合)
    5. zset(sorted set:有序集合)

    string(字符串)

      string时redis最基本的类型,一个key对应一个value

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

      string是redis最基本的数据类型,string类型的值最大能存储512MB

    127.0.0.1:6379> set runood 'william林涛'
    OK
    127.0.0.1:6379> get runood
    william林涛
    127.0.0.1:6379> 

      调用了redis的set和get命令。这里面的键是runood,对应的值就是‘runood’ 

      redis字符串命令:

     1

     set key value

      设置指定key的值

     2

     get key

      获取指定key值

     3

     getrange key start end

      返回key中字符串值的字节符

     4

     getset key value

      将给定key的值设为value,并返回key的旧值(old value)

     5

     getbit key offset

      对key所存储的字符串值,获取指定偏移量上的位(bit)

     6

     mget key1[key2...]

      获取所有(一个或者多个)给定key的值

     7

     setbit key offset value

      对key所存储的字符串值,设置或清除指定偏移量上的位(bit)

     8

    setex key seconds value

      将值value关联到key,并将key的过期时间设为seconds(以秒位单位) 

     9

    setnx key value

      只有key不存在时设置key的值 

     10

     setrange key offset value

      用value 参数赋写给定key所存储的字符串值,从偏移量offset开始

     11

     strlen key

      返回key所存储的字符串值的长度

     12

     mset key value [key value...]

      同时设置一个或多个key-value对

     13

     msetnx key value [key value...]

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

     14

     psetex key milliseconds value

      以毫秒位单位设置key的生存时间,而不是像setex命令那样,以秒为单位

     15

    incr key

      将key中储存的数字增量加一 

     16

     incrby key increment

      将key所存储的值加上给定的增量值(increment)

     17

     incrbyfloat key increment

      将key所储存的值加上给定的浮点增量值

     18

    desc key

      将key中储存的数字值减一

     19

     desrby key descrement

      key所储存的值减去给定的减量值(descrement)

     20

     append key value

      如果key已经存在并且是一个字符串,append命令将指定的value追加到该key原来值(value)的末尾

       


    hash(哈希)

      redis hash是一个键值对集合

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

      当你再次使用之前使用过的runood的时候因为你已经使用过了,所以需要先将之前的key删掉

    127.0.0.1:6379> del runood
    1

      

    127.0.0.1:6379> hmset runood field1 'hello' field2 'world'
    OK
    127.0.0.1:6379> hget runood field1
    hello
    127.0.0.1:6379> hget runood field2
    world
    127.0.0.1:6379> 

      这里面用到了redis的hmset和hget命令,hmset设置了两个field=>value对,hget获取相应的field对应的value

      每个hash可以存储 232 -1 键值对(40多亿)。

      redis hash命令

       更多命令:https://redis.io/commands

    list(列表)

      redis列表是简单的字符串列表,按照插入的顺序排序。你可以选择添加一个元素到列表的头部(左边)或者尾部(右边)。

    127.0.0.1:6379> del runood
    1
    127.0.0.1:6379> lpush runood redis
    1
    127.0.0.1:6379> lpush runood mongodb
    2
    127.0.0.1:6379> lpush runood mysql
    3
    127.0.0.1:6379> lrange runood 0 10
    mysql
    mongodb
    redis
    127.0.0.1:6379> 

      列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

      

      redis列表命令:

      

     

    Set(集合)

      redis的set是string类型的无序集合

      集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

      sadd命令

      添加一个string元素到key对应的set集合中,成功就返回1,如果元素已经在集合中就返回0

    sadd key member
    127.0.0.1:6379> del runood
    1
    127.0.0.1:6379> sadd runood redis
    1
    127.0.0.1:6379> sadd runood mongodb
    1
    127.0.0.1:6379> sadd runood mysql
    1
    127.0.0.1:6379> sadd runood redis
    0
    127.0.0.1:6379> smembers runood
    mysql
    mongodb
    redis
    127.0.0.1:6379> 

      在上面的例子中redis添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略

      集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

      

      redis集合(Set)

      

    zset(sorted set:有序集合)

      redis zset和set一样也是string类型元素的集合,且不允许重复的成员

      不同的是每个元素都会关联一个double类型的分数,redis正式通过分数来为集合中的成员进行从小到大的排序

      zset的成员是唯一的,但分数(score)却可以重复

      

      zadd命令:添加元素到集合,元素在集合中存在的话就更新对应的分数(score)

    zadd key score member
    127.0.0.1:6379> del runood
    1
    127.0.0.1:6379> zadd runood 0 redis
    1
    127.0.0.1:6379> zadd runood 0 mongodb
    1
    127.0.0.1:6379> zadd runood 0 mysql
    1
    127.0.0.1:6379> zadd runood 0 redis
    0
    127.0.0.1:6379> zrangebyscore runood 0 10
    mongodb
    mysql
    redis
    127.0.0.1:6379> 

      redis有序集合命令

      

     

  • 相关阅读:
    10w行级别数据的Excel导入优化记录
    迷失的人
    spring切面表达式详解
    json-path(json查找与操作)
    sprongboot yml文件语法
    消息队列面试突击系列--消息经典问题解决
    消息队列面试突击系列--消息产品对比
    mysql系列--sql实现原理
    mysql系列--锁和MVCC
    mysql系列--索引
  • 原文地址:https://www.cnblogs.com/tulintao/p/11526397.html
Copyright © 2011-2022 走看看