• redis基础之基本键值操作和使用(三)


    前言

    redis安装完毕后开始使用redis,先熟悉命令行操作。

    redis数据的类型

    • 键:redis的所有的键都是string类型;

    • 值:五种类型

    1. string:字符串类型;一个string最大可以储存512MB的数据,其可以储存任何对象;

    2. hash:散列,用来存储对象,key代表对象,field代表属性

    3. set:集合类型,无序的集合,元素为string类型,不可重复;

    4. list:列表类型,一个链表,其元素类型属于string,按照插入的顺序排序

    5. zset:有序集合类型,元素为string,不可重复,每个元素可以指定一个权重,按权重从小到大排列

    常用命令

    服务相关命令

    ping : 返回pong,用来测试连接是否成功;
    echo xxx: 在命令行打印一些内容;
    quit/exit:退出客户端;
    info:返回redis相关的信息;
    

    键命令

    select index  # 切换数据库,0~15代表16个数据库
    keys *  # 查看当前所有的keys,这个在生产环境下不要使用
    keys pattern # 查找键,支持正则,常用的有  *(匹配0个或多个) ?(匹配一个) [a-z] [abcd]
    exists key # 查看这个key是否存在
    type key # 查看key的类型
    ttl key # 查看有效时间,指的是还剩余的有效时间,如果过期,有效时间置为-2;如果设置为永久有效,有效时间为-1.
    
    dbsize # 查看数据库中所有的键值对的数目
    randomkey # 随机返回数据库里的一个key
    rename key1 key2 # 重命名key
    
    flushdb # 清空当前选择的数据库
    flushall # 清库该redis实例所有的数据库
    
    expire key seconds # 为键值对设置过期时间
    client list # 查看当前所有的客户端
    
    # 同步磁盘
    save  # 会立即阻塞所有的客户端请求,开始同步rdb文件
    gbsave  # 异步保存rdb文件
    

    操作string类型

    # 设置键值对,永久保存
    set key value
    # 设置有过期时间的键值对,过期自动删除
    setex key 时间 value
    # 设置多个键值对
    mset key value key value ...
    # 设置多个不存在的键值对,存在则失败
    msetnx key value key value
    # 为不存在的键设置值
    setnx key value    # 如果键存在,设置失败
    # 字符串中字符替换
    
    setrange key offset value
    

    # 获取值
    get key
    # 获取子字符串
    getrange key start end
    strlen key   # 获取值得长度
    

    # 对于value是数值的情况,可以运算;如果不是数字会报错;
    incr key   # 对value加1
    incrby key num  # 对value加一个整数,可以是负数,但不可以是小数
    incrbyfloat key num  # 对value减一个浮点数,可以是负数
    decr key   # 对value减少1
    decrby key num  # 对value减一个整数,可以是负数,但不可以是小数
    
    append key value  # 对原来的key的值进行字符串拼接
    

    # 删除一个或多个键值对
    del key key 
    

    操作hash类型

    # 设置单个hash对象
    hset key field value
    # 设置多个属性
    hmset key field value field value...
    # 为不存在的散列设置值,如果其field或key已经存在,则没有操作
    hsetnx key field value
    

    # 删除属性和值
    hdel key field field
    

    # 判断属性是否存在
    hexists key field
    # 获取一个属性
    hget key field
    # 获取多个属性
    hmget key field field...
    # 获取所有属性和值
    hgetall key
    # 获取所有的属性
    hkeys key
    # 获取所有的值
    hvals key
    # 获取对象属性的个数
    hlen key
    # 返回值得字符串的长度
    hstrlen key field
    

    # 对属性增加一个整数num,如果field不存在,则增加一个field;如果value不是数字整数,替换成数字整数
    hincrby key field num
    # 对属性增加一个浮点数num,如果不存在,增加一个field;如果value不是数字整数,报错;
    hincrbyfloat key field num
    

    操作list类型

    # 创建一个list并在头部插入数据
    lpush key value value..
    # 在尾部插入数据
    rpush key value value
    # 在一个元素的后面或前面插入新的元素,如果有多个相同的元素,会按从头到尾找到的第一个元素
    linsert key before|after 已有的元素  新的元素
    # 设置指定的索引值的元素值,可以是负数,-1表示最后一个
    lset  key index value  # lset list1 3 kkk
    

    # 从头部弹出元素
    lpop key
    # 从尾部弹出元素
    rpop key
    # 返回指定范围内的元素,基于下标0,可以是负数
    lrange key start stop   # lrange list1 -3 -1
    # 如果指定的下标超出了范围,会返回实际的数据
    # 返回list的长度
    llen key
    # 返回对应索引的元素
    lindex key index
    # 从非空列表中弹出最左元素,在timeout时间内阻塞等待
    blpop key key ... timeout
    # 从非空列表中弹出最右元素,在timeout时间内阻塞等待
    brpop key key ... timeout 
    # 从key1中最右端弹出元素加入到key2的最左端,返回该元素 
    rpoplpush key1 key2  
    # 从key1中最右端弹出元素加入到key2的最左端,并在timeout时间内阻塞等待
    brpoplpush key1 key2 timeout
    

    删除

    # 删除元素
    lrem key count value   
    # 删除count个value值,如果count>0,从左边开始删;
    # 小于0从右边开始删;
    # 等于0删除所有的value;
    # count的绝对值大于列表中value的个数时,删除所有的value
    

    修改

    # 剪切原来的列表
    ltrim key start stop
    

    操作集合set

    # 创建并添加一个或多个元素到集合
    sadd key value ...
    

    # 返回集合里的所有元素
    smembers key
    # 返回集合元素的个数
    scard key
    # 多集合的交际
    sinter key1 key2
    # 将集合的交集存储在dest中
    sinterstore dest key1 key2...
    # 多集合的并集
    sunion key1 key2
    # 将集合的并集存储在dest中
    sunionstore dest key1 key2...
    # 多集合的差集,以第一个key作为基准
    sdiff key ...
    # 将存在第一个集合key1,但不在其他集合中的元素存储在dest中
    sdiffstore dest key1 key2 ...
    # 判断元素是否在集合中,如果存在返回1,不存在返回0
    sismember key value
    # 从集合里随机返回一个或多个元素,当count是正数,返回count个不重复的元素,如果不够,返回实际的所有元素;当count为负数,返回count个可重复的元素;为0返回none
    srandmember key  count
    
    

    # 删除元素一个或多个元素
    srem key value
    # 随机移除集合里的一个或多个元素,返回该元素
    spop key count   # count可以不写,默认移除一个;不能为负数,否则报错;大于元素个数,移除所有元素
    

    # 将一个集合里的元素移除并添加到另一个元素里,成功返回1,失败0
    smove key1 key2 member
    

    有序集合zset

    # 创建并加入元素,会按照score的值进行排序,如果元素的分数值相同,将会使用字典排序,按照a到z
    zadd key score value score value ...
    

    # 获取集合中的所有的值,超过范围取实际的值
    zrange key start stop 
    # 返回在分数范围内的元素
    zrangebyscore key min max
    # 返回元素的个数
    zcard key
    # 返回score在范围内的元素
    zcount key min max
    # 返回成员的score的值
    zscore key value
    # 返回成员在有序集合中的排名,从0开始算起
    zrank key member
    

    # 修改元素的值的分数
    zincrby key 整数  value 
    

    # 删除指定元素
    zrem key member member
    # 删除分数范围的元素
    zremrangebyscore key min max
    

    总结

    • redis使用最多的类型是string和list,string作为键值对存储缓存数据,list作为队列使用。

    参考

  • 相关阅读:
    JAVA List对象与json串互相转换
    git错误提示:fatal: remote origin already exists.
    eclipse中js中ctrl+鼠标点击方法出现 the resource is not on the include path of a javaScript project
    JS根据日期获取这周的周一
    jquery基本操作
    redux+react-redux+示例的快速上手体验
    用 async/await 来处理异步
    Git使用详细教程
    SVN里直接把本地目录纳入管理
    修改npm安装的全局路径和配置环境变量的坑
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/8111788.html
Copyright © 2020-2023  润新知