精华内容
下载资源
问答
  • redis数据类型

    千次阅读 2018-04-19 11:33:19
    redis数据类型 redis数据类型一共有5种,string , list string类型 string是最简单的类型,于memcached一样。一个key对应一个value。它的功能更丰先开启富,可以存二进制对象。 redis使用,先开启redis-...

    redis数据类型

    redis数据类型一共有5种,string , list

    1. string类型

      string是最简单的类型,于memcached一样。一个key对应一个value。它的功能更丰先开启富,可以存二进制对象。
      redis使用,先开启redis-server服务

      [root@shuai-01 ~]# redis-server /etc/redis.conf
      

      在进行redis连接

      [root@shuai-01 ~]# redis-cli
      127.0.0.1:6379> 
      
      #添加一个键值对
      127.0.0.1:6379> set mykey "123"
      OK
      127.0.0.1:6379> get mykey 
      "123"
      #获得一个键值对
      127.0.0.1:6379> set myk 123
      OK
      #添加多对键值对
      127.0.0.1:6379> MSET k1 1 k2 2 k3 a
      OK
      #获得多行键值对
      127.0.0.1:6379> MGET k1 mykey k3
      1) "1"
      2) "123"
      3) "a"
      
    2. list类型

      list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。
      使用 list 结构,我们可以轻松地实现最新消息排行等功能(比如新浪微博的 TimeLine )。list 的另一个应用就是消息队列,可以利用 list 的 push操作,将任务存在 list 中,然后工作线程再用pop操作将任务取出进行执行。

       [root@shuai-01 ~]# redis-cli 
       #向list中添加操作
      127.0.0.1:6379> lpush list1 shuai
      (integer) 1
      127.0.0.1:6379> LPUSH list1 aoli
      (integer) 2
      127.0.0.1:6379> LPUSH list1 123
      (integer) 3
      #查看list中的数据,这个的感觉有点像c中间栈,先进后出
      127.0.0.1:6379> LRANGE list1 0 1
      1) "123"
      2) "aoli"
      127.0.0.1:6379> LRANGE list1 0 2
      1) "123"
      2) "aoli"
      3) "shuai"
      127.0.0.1:6379> LRANGE list1 0 -1
      1) "123"
      2) "aoli"
      3) "shuai"
      #取一条数据,先取出来是后添加的
      127.0.0.1:6379> lpop list1
      "123"
      127.0.0.1:6379> LRANGE list1 0 -1
      1) "aoli"
      2) "shuai"
      #去一条数据,先取出来是后添加进来的
      127.0.0.1:6379> RPOP list1 
      "shuai"
      127.0.0.1:6379> LRANGE list1
      (error) ERR wrong number of arguments for 'lrange' command
      127.0.0.1:6379> LRANGE list1 0 -1
      1) "aoli"
      

      这个list机制很有意思,从左开始,就是栈,从右开始,就是队列。

    3. set类型
      set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。因为 Redis 非常人性化的为集合提供了求交集、并集、差集等操作,那么就可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。

      #建一个集合,并向集合中添加元素a,b,c
       127.0.0.1:6379> SADD set1 a
      (integer) 1
      127.0.0.1:6379> SADD set1 b
      (integer) 1
      127.0.0.1:6379> SADD set1 c
      (integer) 1
      127.0.0.1:6379> SADD set1 d
      (integer) 1
      
      #查看集合中元素
      127.0.0.1:6379> SMEMBERS set1
      1) "a"
      2) "d"
      3) "c"
      4) "b"
      
      #删除集合中元素
      
      127.0.0.1:6379> SREM set1 d
      (integer) 1
      127.0.0.1:6379> SMEMBERS set1
      1) "a"
      2) "c"
      3) "b"
      
      127.0.0.1:6379> SADD set2 a
      (integer) 1
      127.0.0.1:6379> SADD set2 1
      (integer) 1
      127.0.0.1:6379> SADD set2 c
      (integer) 1
      127.0.0.1:6379> SADD set2 2
      (integer) 1
      #查看set1和set2的并集
      127.0.0.1:6379> SUNION set1 set2
      1) "a"
      2) "c"
      3) "1"
      4) "b"
      5) "2"
      #查看set1和set2的交集
      127.0.0.1:6379> SINTER set1 set2
      1) "a"
      2) "c"
      #查看两集合的差集
      127.0.0.1:6379> SDIFF set2 set1
      1) "1"
      2) "2"
      127.0.0.1:6379> SDIFF set1 set2 
      1) "b"
      这时,两集合顺序不同得到的结果不同。结果就是,前面一个集合减去他们的交集。
      
    4. sort set 类型
      sorted set是有序集合,它比set多了一个权重参数score,使得集合中的元素能够按 score 进行有序排列,比如一个存储全班同学成绩的 Sorted Sets,其集合 value 可以是同学的学号,而 score 就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。

      #添加一个有序集合
      127.0.0.1:6379> ZADD seta 12 shuai
      (integer) 1
      127.0.0.1:6379> ZADD seta 24 aoli
      (integer) 1
      127.0.0.1:6379> ZADD seta 5 wo
      (integer) 1
      127.0.0.1:6379> ZADD seta 10 shi
      (integer) 1
      #查看数据,根据score大小进行排序
      127.0.0.1:6379> ZRANGE seta 0 -1
      1) "wo"
      2) "shi"
      3) "shuai"
      4) "aoli"
      #倒叙查看
      127.0.0.1:6379> ZREVRANGE seta 0 -1
      1) "aoli"
      2) "shuai"
      3) "shi"
      4) "wo"
      
    5. hash类型
      在 Memcached 中,我们经常将一些结构化的信息打包成 hashmap,在客户端序列化后存储为一个字符串的值(一般是 JSON 格式),比如用户的昵称、年龄、性别、积分等。

      127.0.0.1:6379> hset hash1 name shuai
      (integer) 1
      127.0.0.1:6379> hset hash1 age 23
      (integer) 1
      127.0.0.1:6379> hset hash1 weigth 60
      (integer) 1
      127.0.0.1:6379> hget hash1 name
      "shuai"
      127.0.0.1:6379> hget hash1 age
      "23"
      127.0.0.1:6379> hget hash1 weigth
      "60"
      #查看所有hash值
      127.0.0.1:6379> HGETALL hash1
      1) "name"
      2) "shuai"
      3) "age"
      4) "23"
      5) "weigth"
      6) "60"
      
    展开全文
  • Redis数据类型

    千次阅读 多人点赞 2019-09-27 11:36:47
    Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求,Redis数据类型的使用场景可以参考Redis使用场景 数据类型 可以存储的值 操作 STRING 字符串、整数或者浮点数 对整个...

    Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求,Redis各数据类型的使用场景可以参考Redis使用场景

    数据类型 可以存储的值 操作
    STRING 字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作
    对整数和浮点数执行自增或者自减操作
    LIST 列表 从两端压入或者弹出元素
    对单个或者多个元素进行修剪,
    只保留一个范围内的元素
    SET 无序集合 添加、获取、移除单个元素
    检查一个元素是否存在于集合中
    计算交集、并集、差集
    从集合里面随机获取元素
    HASH 包含键值对的无序散列表 添加、获取、移除单个键值对
    获取所有键值对
    检查某个键是否存在
    ZSET 有序集合 添加、获取、删除元素
    根据分值范围或者成员来获取元素
    计算一个键的排名

    STRING

    string

    > set hello world
    OK
    > get hello
    "world"
    > del hello
    (integer) 1
    > get hello
    (nil)
    

    LIST

    list

    > rpush list-key item
    (integer) 1
    > rpush list-key item2
    (integer) 2
    > rpush list-key item
    (integer) 3
    
    > lrange list-key 0 -1
    1) "item"
    2) "item2"
    3) "item"
    
    > lindex list-key 1
    "item2"
    
    > lpop list-key
    "item"
    
    > lrange list-key 0 -1
    1) "item2"
    2) "item"
    

    SET

    set

    > sadd set-key item
    (integer) 1
    > sadd set-key item2
    (integer) 1
    > sadd set-key item3
    (integer) 1
    > sadd set-key item
    (integer) 0
    
    > smembers set-key
    1) "item"
    2) "item2"
    3) "item3"
    
    > sismember set-key item4
    (integer) 0
    > sismember set-key item
    (integer) 1
    
    > srem set-key item2
    (integer) 1
    > srem set-key item2
    (integer) 0
    
    > smembers set-key
    1) "item"
    2) "item3"
    

    HASH

    hash

    > hset hash-key sub-key1 value1
    (integer) 1
    > hset hash-key sub-key2 value2
    (integer) 1
    > hset hash-key sub-key1 value1
    (integer) 0
    
    > hgetall hash-key
    1) "sub-key1"
    2) "value1"
    3) "sub-key2"
    4) "value2"
    
    > hdel hash-key sub-key2
    (integer) 1
    > hdel hash-key sub-key2
    (integer) 0
    
    > hget hash-key sub-key1
    "value1"
    
    > hgetall hash-key
    1) "sub-key1"
    2) "value1"
    

    ZSET

    zset

    > zadd zset-key 728 member1
    (integer) 1
    > zadd zset-key 982 member0
    (integer) 1
    > zadd zset-key 982 member0
    (integer) 0
    
    > zrange zset-key 0 -1 withscores
    1) "member1"
    2) "728"
    3) "member0"
    4) "982"
    
    > zrangebyscore zset-key 0 800 withscores
    1) "member1"
    2) "728"
    
    > zrem zset-key member1
    (integer) 1
    > zrem zset-key member1
    (integer) 0
    
    > zrange zset-key 0 -1 withscores
    1) "member0"
    2) "982"
    
    展开全文
  • Redis 数据类型

    2015-01-19 15:16:00
    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 String(字符串) string是redis最基本的类型,你可以理解成与...

    Redis 数据类型

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


    String(字符串)

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

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

    string类型是Redis最基本的数据类型,一个键最大能存储512MB。

    实例

    redis 127.0.0.1:6379> SET name "myname"
    OK
    redis 127.0.0.1:6379> GET name
    "w3cschool.cc"
    

    在以上实例中我们使用了 Redis 的 SET 和 GET 命令。键为 name,对应的值为w3cschool.cc。

    注意:一个键最大能存储512MB。


    Hash(哈希)

    Redis hash 是一个键值对集合。

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

    实例

    redis 127.0.0.1:6379> HMSET user:1 username w3cschool.cc password 
    password
    .cc points 200OKredis 127.0.0.1:6379> HGETALL user:11) "username"2) "w3cschool.cc"3) "password"4) "w3cschool.cc"5) "points"6) "200"redis 127.0.0.1:6379>

    以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中我们使用了 Redis HMSET, HEGTALL 命令,user:1 为键值。

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


    List(列表)

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

    实例

    redis 127.0.0.1:6379> lpush w3cschool.cc redis
    (integer) 1
    redis 127.0.0.1:6379> lpush w3cschool.cc mongodb
    (integer) 2
    redis 127.0.0.1:6379> lpush w3cschool.cc rabitmq
    (integer) 3
    redis 127.0.0.1:6379> lrange w3cschool.cc 0 10
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    redis 127.0.0.1:6379>
    

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


    Set(集合)

    Redis的Set是string类型的无序集合。

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

    sadd 命令

    添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误。

    sadd key member
    

    实例

    redis 127.0.0.1:6379> sadd w3cschool.cc redis
    (integer) 1
    redis 127.0.0.1:6379> sadd w3cschool.cc mongodb
    (integer) 1
    redis 127.0.0.1:6379> sadd w3cschool.cc rabitmq
    (integer) 1
    redis 127.0.0.1:6379> sadd w3cschool.cc rabitmq
    (integer) 0
    redis 127.0.0.1:6379> smembers w3cschool.cc
    
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    

    注意:以上实例中 rabitmq 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

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


    zset(sorted set:有序集合)

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

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

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

    zadd 命令

    添加元素到集合,元素在集合中存在则更新对应score

    zadd key score member 
    

    实例

    redis 127.0.0.1:6379> zadd w3cschool.cc 0 redis
    (integer) 1
    redis 127.0.0.1:6379> zadd w3cschool.cc 0 mongodb
    (integer) 1
    redis 127.0.0.1:6379> zadd w3cschool.cc 0 rabitmq
    (integer) 1
    redis 127.0.0.1:6379> zadd w3cschool.cc 0 rabitmq
    (integer) 0
    redis 127.0.0.1:6379> ZRANGEBYSCORE w3cschool.cc 0 1000
    
    1) "redis"
    2) "mongodb"
    3) "rabitmq"
    展开全文
  • redis数据类型之list

    万次阅读 2020-08-19 16:12:30
    redis数据类型之list 简单使用 lpush:在列表的左边插入元素,语法:LPUSH key element [element ...]。 127.0.0.1:6379> lpush k1 a b c d (integer) 4 lrange:查看列表中的元素,语法:LRANGE key start stop...

    redis数据类型之list

    简单使用

    lpush:在列表的左边插入元素,语法:LPUSH key element [element ...]

    127.0.0.1:6379> lpush k1 a b c d
    (integer) 4
    

    lrange:查看列表中的元素,语法:LRANGE key start stop

    127.0.0.1:6379> lrange k1 0 -1
    1) "d"
    2) "c"
    3) "b"
    4) "a"
    

    lpop:从列表的左边取出一个元素,语法:LPOP key

    127.0.0.1:6379> lpop k1
    "d"
    127.0.0.1:6379> lpop k1
    "c"
    127.0.0.1:6379> lpop k1
    "b"
    127.0.0.1:6379> lpop k1
    "a"
    

    rpush:在列表的右边插入元素,语法:RPUSH key element [element ...]

    127.0.0.1:6379> rpush k1 a b c d
    (integer) 4
    

    rpush:从列表的右边取出一个元素,语法:RPOP key

    127.0.0.1:6379> rpop k1
    "d"
    127.0.0.1:6379> rpop k1
    "c"
    127.0.0.1:6379> rpop k1
    "b"
    127.0.0.1:6379> rpop k1
    "a"
    

    lindex:查询指定索引的元素,语法:LINDEX key index

    127.0.0.1:6379> lpush k1 a b c d
    (integer) 4
    127.0.0.1:6379> lindex k1 -1
    "a"
    

    llen:获取列表的长度,语法:LLEN key

    127.0.0.1:6379> llen k1
    (integer) 4
    

    linsert:在指定元素的前面或后面插入元素,语法:LINSERT key BEFORE|AFTER pivot element

    127.0.0.1:6379> linsert k1 before b x
    (integer) 5
    127.0.0.1:6379> lrange k1 0 -1
    1) "d"
    2) "c"
    3) "x"
    4) "b"
    5) "a"
    

    lrem:根据指定个数的指定元素,语法:LREM key count element

    127.0.0.1:6379> lrange k1 0 -1
    1) "a"
    2) "c"
    3) "b"
    4) "a"
    5) "d"
    6) "c"
    7) "x"
    8) "b"
    9) "a"
    127.0.0.1:6379> lrem k1 2 a
    (integer) 2
    127.0.0.1:6379> lrange k1 0 -1
    1) "c"
    2) "b"
    3) "d"
    4) "c"
    5) "x"
    6) "b"
    7) "a"
    

    使用的lrem的注意事项:

    • 指定的count超出列表中对应元素的个数,删除所有指定的元素。
    • count为负数,从右往左删除。
    • count为0,删除所有指定的元素。
    • count为正数,从左往右删除。

    lset:设置指定索引位置的元素,语法:LSET key index element

    127.0.0.1:6379> lrange k1 0 -1
    1) "y"
    2) "x"
    3) "c"
    4) "c"
    5) "a"
    127.0.0.1:6379> lset k1 1 o
    OK
    127.0.0.1:6379> lrange k1 0 -1
    1) "y"
    2) "o"
    3) "c"
    4) "c"
    5) "a"
    

    ltrim:截取保留列表中指定索引的元素,语法:LTRIM key start stop

    127.0.0.1:6379> lrange k1 0 -1
    1) "y"
    2) "o"
    3) "c"
    4) "c"
    5) "a"
    127.0.0.1:6379> ltrim k1 2 3
    OK
    127.0.0.1:6379> lrange k1 0 -1
    1) "c"
    2) "c"
    

    lpos:在列表中匹配第一个找到的元素,可以指定范围,默认从头到尾扫描。

    127.0.0.1:6379> rpush k2 a b c 1 2 3 c c
    (integer) 8
    127.0.0.1:6379> lpos k2 c
    (integer) 2
    127.0.0.1:6379> lpos k2 c rank 2
    (integer) 6
    127.0.0.1:6379> lpos k2 c rank -1
    (integer) 7
    127.0.0.1:6379> lpos k2 c count 2
    1) (integer) 2
    2) (integer) 6
    

    内部编码

    列表类型的内部编码为quicklist

    127.0.0.1:6379> rpush k3 a b c
    (integer) 3
    127.0.0.1:6379> object encoding k3
    "quicklist"
    

    使用场景

    1. 链表:lpush+rpop,rpush+lpop,反向命令的组合可以实现链表。

    2. 栈:lpush+lpop,rpush+rpop,同向命令的组合可以实现栈。

    3. 数组:rpush+lindex+lset,可以实现数组的功能。

    4. 消息队列:lpush+brpop。

    展开全文
  • redis数据类型之sorted_set

    万次阅读 2020-08-28 11:57:57
    redis数据类型之sorted_set sorted_set:有序集合,在set的基础上增加score属性用来排序,在redis中,数据类型对应的命令一般以数据类型的首字母开头,但是单词s已经被string类型使用了,所以sorted_set类型的相关...
  • redis数据类型之string

    万次阅读 2020-08-17 18:25:34
    redis数据类型之string 字符串类型是Redis最基础的数据结构。首先key都是字符串类型,而且其他几种数据结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习打下基础。 字符串类型的值实际...
  • Redis 数据类型 Stream

    2021-01-13 12:51:02
    Redis 数据类型 Stream Redis Stream 是 Redis 5.0 版本新增加的数据结构。 Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个...
  • 10303redis数据类型set redis set 是string类型的无序集合.集合的成员是唯一的,不会出现重复数据.redis set 是通过哈希表实现的,所以添加,删除,查找的复杂度是O(1)redis set 最大成员数是1.常用命令命令描述sadd key...
  • 如何在ubuntu18.04上安装和保护redis 如何连接到Redis数据库 如何管理Redis数据库和Keys 如何在Redis中管理副本和客户端 如何在Redis中管理字符串 ...Redis数据类型简介 Redis数据类型简介 Redis.
  • 【Redis学习】:Redis数据类型

    千次阅读 2017-01-12 22:32:05
    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集 合)。 String(字符串) string是redis最基本的类型,你可以理解成与...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,599
精华内容 16,239
关键字:

redis数据类型

redis 订阅