zoukankan      html  css  js  c++  java
  • redis学习(二)数据类型

    hash类型

    • string 类型的键值对集合
    • redis 中数据类型不支持嵌套,例如不能在 hash 中设置值为 hash
    • 适合用于存储对象
    • 每个 hash 可以存储 2 32 -1 键值对(40多亿)
    设置值hset 获取值hget
    127.0.0.1:6379> hset phone name apple
    (integer) 1
    127.0.0.1:6379> hget phone name
    "apple"

    同时设置多个字段和值(键相同)hset,同时获取多个字段的值(键相同)hget 127.0.0.1:6379> hmset phone price 12000 from America OK127.0.0.1:6379> hmget phone name price from 1) "apple" 2) "12000" 3) "America"

    查看键中所有字段 127.0.0.1:6379> hkeys phone 1) "name" 2) "price" 3) "from"

    查看键中所有值127.0.0.1:6379> hvals phone 1) "apple" 2) "12000" 3) "America"

    查看键中所有的字段和值 127.0.0.1:6379> hgetall phone 1) "name" 2) "apple" 3) "price" 4) "12000" 5) "from" 6) "America"

    查看键中字段的个数 127.0.0.1:6379> hlen phone (integer) 3

    查看键中是否存在某个字段 127.0.0.1:6379> hexists phone price (integer) 1

    键中某个字段增加一定值,只能是数字类型 127.0.0.1:6379> hincrby phone price 1000 (integer) 13000
    127.0.0.1:6379> hget phone price "13000"
    127.0.0.1:6379> hincrby phone name 100
    (error) ERR hash value is not an integer

    如果字段不存在则赋值,如果存在则不赋值
    127.0.0.1:6379> hsetnx phone price 11000
    (integer) 0
    127.0.0.1:6379> hget phone price
    "13000"
    127.0.0.1:6379> hsetnx phone generation 12
    (integer) 1
    127.0.0.1:6379> hget phone generation
    "12"

    删除键中某个字段 127.0.0.1:6379> hdel phone generation (integer) 1 127.0.0.1:6379> hkeys phone 1) "name" 2) "price" 3) "from"

    删除键 127.0.0.1:6379> del phone (integer) 1 127.0.0.1:6379> exists phone (integer) 0
    总结:
    增/改:hset hmset hsetnx hincrby
    删:hdel
    查:hget hmget hkeys hvals hgetall hlen hexists
    未举例的hash命令:hincrbyfloat hstrlen hvals hscan

     list类型

    • Redis 列表是简单的字符串列表,按照插入顺序排序
    • 可以添加一个元素到列表的头部(左边)或者尾部(右边)
    • 使用双向链表实现的,所以从两端取值时速度非常快
    • 列表最多可存储 2 32 - 1 元素 (4294967295, 每个列表可存储40多亿)

    lpush从链表左端插入元素,可插入一个或多个
    127.0.0.1:6379> lpush phone apple
    (integer) 1
    127.0.0.1:6379> lpush phone samsung huawei xiaomi
    (integer) 4

    lrange根据索引查看链表元素,支持反向索引(-1代表最右,-2代表倒数第二,以此类推)
    127.0.0.1:6379> lrange phone 0 -1
    1) "xiaomi"
    2) "huawei"
    3) "samsung"
    4) "apple"
    127.0.0.1:6379> lrange phone -2 -1
    1) "samsung"
    2) "apple"

    linsert在指定元素左侧或者右侧插入元素
    127.0.0.1:6379> linsert phone before xiaomi oppo
    (integer) 5
    127.0.0.1:6379> linsert phone after apple vovi
    (integer) 6
    127.0.0.1:6379> lrange phone 0 -1
    1) "oppo"
    2) "xiaomi"
    3) "huawei"
    4) "samsung"
    5) "apple"
    6) "vovi"

    lset指定链表指定索引处元素的值
    127.0.0.1:6379> lset phone 0 zhongxing
    OK

    lindex查看链表指定索引处元素的值
    127.0.0.1:6379> lindex phone 0
    "zhongxing"
    127.0.0.1:6379> lrange phone 0 -1
    1) "zhongxing"
    2) "xiaomi"
    3) "huawei"
    4) "samsung"
    5) "apple"
    6) "vovi"

    lpop从链表左端弹出一个元素
    127.0.0.1:6379> lpop phone
    "zhongxing"

    rpop从链表右端弹出一个元素
    127.0.0.1:6379> rpop phone
    "vovi"
    127.0.0.1:6379> lrange phone 0 -1
    1) "xiaomi"
    2) "huawei"
    3) "samsung"
    4) "apple"

    lrem key count value删除count个数个值为value的元素

    count>0从左侧删除count个元素,count<0从右端删除count个元素,count=0删除所有值为value的元素
    127.0.0.1:6379> lrem phone 1 samsung
    (integer) 1
    127.0.0.1:6379> lrange phone 0 -1
    1) "xiaomi"
    2) "huawei"
    3) "apple"

    ltrim删除链表指定索引区间外的所有元素
    127.0.0.1:6379> ltrim phone 0 1
    OK
    127.0.0.1:6379> lrange phone 0 -1
    1) "xiaomi"
    2) "huawei"

    rpoplpush source desc从第一个链表右端弹出一个元素,放入第二个链表左端,如果是同一个链表,则为列表旋转
    127.0.0.1:6379> lpush car benz bmw audi
    (integer) 3
    127.0.0.1:6379> rpoplpush car phone
    "benz"
    127.0.0.1:6379> lrange phone 0 -1
    1) "benz"
    2) "xiaomi"
    3) "huawei"
    127.0.0.1:6379> rpoplpush phone phone
    "huawei"

    127.0.0.1:6379> lrange phone 0 -1
    1) "huawei"
    2) "benz"
    3) "xiaomi"

    总结:

    增:lpush rpush linsert

    删: lpop rpop lrem ltrim

    改:lset rpoplpush

    查:lindex lrange llen

    没有根据索引删除,很别扭

    未举例的list命令:lpushx rpushx blpop brpop brpoplpush

  • 相关阅读:
    使用手机重量加速器
    改变 Pivot 的 HeaderTemplate
    页面构造函数和 Load 事件的执行次数
    给 ListBox 的 DataTemplate 模板中的 元素设置动画
    在ItemsControl 中,添加头部下拉更新
    (转) Unix 时间戳 与 .NET 时间转换
    图片保存到本机(链接)
    IsHitTestVisible="False" 的功能
    回到顶部按钮
    ssh访问服务器端visdom
  • 原文地址:https://www.cnblogs.com/scorates/p/14096206.html
Copyright © 2011-2022 走看看