zoukankan      html  css  js  c++  java
  • [Redis] Redis的基本数据结构

    key-value

    通过key获取或设置value

    SET key value

    GET key

    SET server:name "fido"
    
    GET server:name
    

    SETNX : SET-if-not-exists

    INCR : +1 原子操作

    SET connections 10
    INCR connections =>11
    
    INCR A =>1
    

    给key设置过期时间

    TTL 获取一个key的存活时间,每次set一个key的value,过期时间将会重置

    • -2 已过期
    • -1 永不过期
    SET str "ASD"
    EXPIRE str 120 # 120s后过期
    TTL str # 获取str的过期时间
    

    list

    RPUSH 插入数据到list末尾

    LPUSH 插入数据到list起点

    LRANGE 返回list的子集 下标从0开始

    LRANGE friends 0 -1  # 类似python  返回整个list
    

    LLEN 返回list长度

    LPOP 删除list第一个元素并返回这个元素(左边是第一个元素)

    RPOP 删除list最后一个元素并返回这个元素(右边是最后一个元素)

    set

    去重的list,无序,由于是无序的所以没有srange这个命令,取而代之的是SMEMBERS用于返回所有的数据

    SADD

    重复的元素会插入失败

    SADD data_set "aa"    // 1
    SADD data_set "data1" // 1
    SADD data_set "aa"    // 0,已经存在aa,插入失败
    

    SREMset中删除指定元素

    SREM data_set "data1"
    

    SISMEMBER 是否set中元素 1 => 是

    SISMEMBER data_set "aa"
    

    SMEMBERS 返回set所有元素

    SUNION 两个或多个set合并并返回所有元素的列表

    SCARD 返回set长度

    zset (有序set)

    通过一个score来排序

    添加数据的时候要指定一个score,用于排序,排序是redis自动执行的

    ZADD superheros 1 ironman
    ZADD superheros 3 thor
    ZADD superheros 2 spiderman
    

    ZRANGE key start stop [WITHSCORES]
    返回key中[start stop] 的数据,按score递增排序,递减排序用ZREVRANGE

    加上withscores后会将score也输出

    > zrange superheros 0 -1
    1) "ironman"
    2) "spiderman"
    3) "thor"
    
    > zrange superheros 0 -1 withscores
    1) "ironman"
    2) 1.0
    3) "spiderman"
    4) 2.0
    5) "thor"
    6) 3.0
    

    ZREM
    删除zset中一个或多个成员,不存在的被忽略
    返回成功移除的数量

    Hashes

    HSET key field value

    设置key中给定域field的值为value

    HMSET key field value field2 value2

    同时设置key的多个域

    HGET key field

    获取key的某个域的值

    HMGET key field field2

    获取key的多个域的值

    > HSET key field value
    (integer) 1
    
    > HSET key field1 value1
    (integer) 1
    
    > HGET key field
    "value"
    
    HMSET key field1 value1 field2 value2 field3 value3
    OK
    
    > HMGET key field1 field2 filed3 field4
    1) "value1"
    2) "value2"
    3) "value3"
    4) (nil)
    

    HSET的返回值

    Sets field in the hash stored at key to value. If key does not exist, a new key holding a hash is created. If field already exists in the hash, it is overwritten.

    0 变量已存在,值已更新

    1 变量不存在,已经创建

    理解为key指向了一个对象,这个对象里都是键值对

    HINCRBY 为field的value增加指定数值,原子操作,如果field不存在将会新增

    HSET key age 3
    HINCRBY key age 2 # age变成5
    
    HINCRBY key num 1 # num被新建,值设置为1
    

    HDEL 删除key的某个field

    HDEL key age
    

    HGETALL 获取key的所有field和value

    > HGETALL key
    1) "field"
    2) "value"
    3) "field2"
    4) "value2"
    

    HLEN key

    获取给定key中域的数量

    HEXISTS key field

    给定域中是否存在域field,返回0(不存在)或1(存在)

    HKEYS key

    类似keys,返回key中所有field

    > hkeys key
    1) "field"
    2) "field2"
    
    

    HVALS key

    返回key中所有value

    > hvals key
    1) "value"
    2) "value2"
    

    Reference

    1. Try Redis
  • 相关阅读:
    文件和数组的排序
    批量删除文档中的注释和空行
    strcat()的编写
    OpenGL鼠标旋转图像
    c++对文件操作的支持(二)
    汉字的16进制存储
    启动程序的c++方法
    HDU 2199 Can you solve this equation? 二分
    HDU 2899 Strange fuction 二分
    HDU 1233 还是畅通工程 最小生成树
  • 原文地址:https://www.cnblogs.com/arcsinw/p/11414576.html
Copyright © 2011-2022 走看看