• Redis篇2-五大数据类型


    redis支持string、list、set、zset和hash五大数据类型,但是他们的操作语法不一致..以下粗略过一遍。

    String类型(字符串)

    简单说明

    • 最基本的数据类型,和Memcached一样
    • 单值单value,类比Java的Map<String, String>。
    • 二进制安全的,redis的string可以包含任意字符串数据,比如jpg图片内容和序列化的对象都可以。
    • 理论上,redis的string的value可以很大,最多512M。

    常用操作

    • set key value 定义/覆盖一个字符串键值
    • get key 获取键的字符串值
    • del key 删除键值
    • appen key value 值append
    • strlen key 值的长度
    • exists key 判断某个key是否存在
    • move key n 将当前库的key迁移到n号数据库
    • expire key n 给key设置过期时间为n秒
      过期之后get keykeys * 就看不到了,相当于删掉了
    • ttl kyc 查看目标key还有多久过期
      -1代表永不过期(默认),-2代表已过期
    • type key 查看键的类型,比如string
    • incr key 对值进行+1,只对数字型的值有效
    • decr key 对值进行-1,只对数字型的值有效
    • incrby key n 对值进行+n,只对数字型的值有效
    • decrby key n 对值进行-n,只对数字型的值有效
    • getrange key 0 3 获取指定区间的值(前4个字符),即substr,getrange key 0 -1 表示获取全部
    • setrange key .. 设置指定区间的值
    • setex key n value 定义一个键值且同时设置好过期时间(n为秒值)
    • setnx key value 如果键不存在才创建,即set if not exist,避免覆盖
    • mset/mget/msetnx 同时定义/获取多个键值
      mset k1 v1 k2 v2 k3 v3
      mget k1 k2 k3
      msetnx k3 v3 k4 v4 #注:k3已存在,本次失败,k4也不会创建
      
    • ...

    List类型(列表)

    简单说明

    • 单值多value,类比Java的Map<string, List>
    • 是一个字符串链表,左右两边都可以操作
    • 如果键不存在,新建链表,存在则追加元素
    • 如果值的多个value全部被移除,对应的键自动移除

    常用操作

    • lpush/rpush/lrange 定义和获取一个list键值
      lpush l1 v4 v3 v2 v1 #从左push
      rpush l1 v5 v6 v7 v8 #从右push
      lrange l1 0 -1 #获取l1值
      lrange l1 0 4 #范围获取l1值
      
    • lpop/rpop key 从从左/右边出栈(pull掉并返回)
    • llen key 列表元素个数
    • lindex key value 类比String的indexOf函数
    • ...

    Set类型(无序去重列表)

    简单说明

    • 和List差别不大,单值多value,类比Java的Map<String, Set>
    • 无序无重复,底层是Hashtable

    常用操作

    • sadd key values .. 定义Set键值
    • smembers key 遍历set键值
    • sismember key value 判断是否有某值
      madd s1 1 2 3 2 3
      smembers s1
      sismember s1 1
      sismember s1 x
      
    • scard key set集合元素个数
    • srem key value 移除某个value
    • spop key 随机一个出栈
    • srandmember key n 随机n个出栈
    • ...

    Zset类型(有序集合)

    简单说明

    • 即Sorted Set,和Set一样,无序无重复,类比Java的Map<String, ScoreSet>
    • 会给每个元素关联一个double类型的分数score
    • zset成员元素不能重复,而这个score可以重复
    • 排序即通过每个成员的score值从小到大排的
    • 多用于一些统计场景

    常用操作

    • zadd/zrange
    zadd z01 60 C 70 B 80 A 90 S
    zrange z01 0 -1
    zrange z01 0 -1 withscores
    
    • ...

    Hash类型(散列)

    简单说明

    • 单值多value,类比Java中的Map<String,<String, Object>
    • 可以当作是在redis中进行Java对象的定义

    常用操作

    • hset/hget/hmset/hmget/hgetall/hdel 定义,获取,删除
    hset user0 id 1 nane hwc1
    hget user0 id
    hgetall user0
    hdel user0 id
    
    • hlen key “对象的属性”个数
    • hexists key0 key1 是否存在某个“属性”
    • hkeys/hvals key0 遍历“对象”属性/值
    • ...
  • 相关阅读:
    『开源』仿SQLServer山寨一个 跨数据库客户端
    『开源』也顺手写一个 科学计算器:重磅开源
    『转载』还在找字体?收下这份最全可商用免费字体清单!
    『开源协议』Creative Commons Attribution 3.0 License . 协议的个人理解,并 转载分享 4000个 精美可商用小图标
    『卧槽』意外发现了 Hashtable 的 foreach 用法 BUG
    『性能』List 和 HashSet 查找性能比较 (任何数据量的检索 从此只用 HashSet )
    『备注』GDI+ 绘制文本有锯齿,透明背景文本绘制
    『动态』动态JSON万能转换函数 + .Net40 dynamic动态数据绑定
    『随笔』.Net 底层 数组[] 的 基本设计探秘 512 子数组
    『转载』中国芯片差在哪?这篇讲全了
  • 原文地址:https://www.cnblogs.com/noodlerkun/p/11487651.html
Copyright © 2020-2023  润新知