• redis入门基础


    一 前言

    知识追寻者的redis开篇第一篇,希望大家共勉;觉得文章不错,随手点赞关注谢谢;

    先介绍一下redis概念:

    Redis是一个开源的key-value存储系统,它属于NoSQL(Not Only SQL),不仅仅是关系型数据库;

    再看看redis的优势:

    • 丰富的数据类型
    • 支持键过期特性
    • 每条指令都是原子性操作
    • 读写性能极高

    初步了解一下redis的附加特性

    • 可以主存与二级存储,主从复制;
    • 支持数据持久化存储

    linux 安装 redis 链接 : https://www.jianshu.com/p/bc84b2b71c1c

    windows安装redis链接: https://www.jianshu.com/p/e16d23e358c0

    docker 安装 redis 链接 https://juejin.im/post/5ca59dece51d4508b32a1292

    最后生产环境中建议大家安装 redis 5.0.5 稳定版本

    二 五大基础数据类型

    2.1 字符串

    字符串型数据存储为 key - val (键值对)形式,即每个 键都有对应唯一的值;如下图所示,age 为 key 则对应唯一的值为18;

    命令介绍如下

    1. get : 获取存储给定键的值
    2. set : 设置给定存储键的值
    3. del : 删除给定键的值
    4. incr :计数,每次加1
    5. incrby : 计算,给定值加减
    6. mset : 设置多个键值
    7. mget : 获取多个给定键的值
    8. expire : 设置过期时间(适用所有类型)
    9. exists : 是否存在键

    存储字符串示例

    set key value

    127.0.0.1:6379> set zszxz 666
    OK
    

    获取字符串示例

    get key

    127.0.0.1:6379> get zszxz
    "666"
    

    删除字符串示例

    del key [key ...]

    127.0.0.1:6379> del zszxz
    (integer) 1
    

    计数示例:

    incr key

    127.0.0.1:6379> set age 100
    OK
    127.0.0.1:6379> incr age
    (integer) 101
    127.0.0.1:6379> incr age
    (integer) 102
    127.0.0.1:6379> get age
    "102"
    127.0.0.1:6379>
    

    incrby key increment

    127.0.0.1:6379> set age 100
    OK
    127.0.0.1:6379> incrby age 5
    (integer) 105
    127.0.0.1:6379> incrby age -2
    (integer) 103
    127.0.0.1:6379> get age
    "103"
    127.0.0.1:6379>
    

    多键值对示例

    mset key value [key value ...]

    mget key [key ...]

    127.0.0.1:6379> mset u1 you1 u2 you2
    OK
    127.0.0.1:6379> mget u1 u2
    1) "you1"
    2) "you2"
    127.0.0.1:6379>
    

    设置过期时间

    expire key seconds

    127.0.0.1:6379> expire u1 1
    (integer) 1
    127.0.0.1:6379> get u1
    (nil)
    127.0.0.1:6379>
    

    存在示例

    exists key [key ...]

    127.0.0.1:6379> set age 100
    OK
    127.0.0.1:6379> exists age
    (integer) 1
    127.0.0.1:6379>
    

    2.2 列表

    列表其实就是链表,一个列表有一个键,一个键对应多个值,值可以重复,取值时根据索引取值即可;

    1. rpush : 将值推入列表右端
    2. lrange : 获取列表给定范围内所有的值
    3. lindex : 获取列表上给定位置的单个元素
    4. lpop : 从列表的左端弹出一个值

    值入列表示例

    rpush key value [value ...]

    127.0.0.1:6379> rpush list-zszxz a
    (integer) 1
    127.0.0.1:6379> rpush list-zszxz b
    (integer) 2
    127.0.0.1:6379> rpush list-zszxz c
    (integer) 3
    

    范围取值示例

    lrange key start stop

    127.0.0.1:6379> lrange list-zszxz 0 -1
    1) "a"
    2) "b"
    3) "c"
    

    给定索引取值示例

    lindex key index

    127.0.0.1:6379> lindex list-zszxz 1
    "b"
    

    左弹出示例

    lpop key

    127.0.0.1:6379> lpop list-zszxz
    "a"
    127.0.0.1:6379>  lrange list-zszxz 0 -1
    1) "b"
    2) "c"
    

    2.3 集合

    集合与列表类似,不过特殊指出是集合无序,并且每个值都是唯一,不可重复;

    1. sadd : 将给定的值加入集合
    2. smembers : 返回集合所有的元素
    3. sismember : 检查给定的元素是否存在集合中
    4. srem : 若集合中存在该元素,则移除该元素

    添加示例

    sadd key member [member ...]

    127.0.0.1:6379> sadd set-zszxz a
    (integer) 1
    127.0.0.1:6379> sadd set-zszxz b
    (integer) 1
    127.0.0.1:6379> sadd set-zszxz c
    (integer) 1
    

    返回所有元素示例

    smembers key

    127.0.0.1:6379> smembers set-zszxz
    1) "c"
    2) "b"
    3) "a"
    

    存在示例

    sismember key member

    127.0.0.1:6379> sismember set-zszxz c
    (integer) 1
    

    删除示例

    srem key member [member ...]

    127.0.0.1:6379> srem set-zszxz a
    (integer) 1
    127.0.0.1:6379> smembers set-zszxz
    1) "c"
    2) "b"
    

    2.4 散列

    散列点像java中的map,python中的字典;一个散列里面存储多个键值对;

    1. hset : 给定散列的键值对
    2. hget : 获取指定散列键的值
    3. hetall : 获取所有散列的键值对
    4. hdel : 若散列中存在该键,则移除键

    设置散列键值对示例

    hset key field value

    127.0.0.1:6379> hset hash-key key1 a
    (integer) 1
    127.0.0.1:6379> hset hash-key key2 b
    (integer) 1
    127.0.0.1:6379> hset hash-key key3 c
    (integer) 1
    127.0.0.1:6379>
    

    获取散列给定键示例

    hget key field

    127.0.0.1:6379> hget hash-key key1
    "c"
    

    获取散列所有键值对示例

    hgetall key

    127.0.0.1:6379> hgetall hash-key
    1) "key1"
    2) "c"
    3) "key2"
    4) "b"
    5) "key3"
    6) "c"
    

    删除散列键示例

    hdel key field [field ...]

    127.0.0.1:6379> hdel hash-key key1
    (integer) 1
    127.0.0.1:6379> hgetall hash-key
    1) "key2"
    2) "b"
    3) "key3"
    4) "c"
    127.0.0.1:6379>
    

    2.5 有序集合

    redis 有序集合与散列类似,不同之处键称为member, value称为 score ; 根据分值不同进行有序排序;

    1. zadd : 将带有给定分值的成员添加入有序集合
    2. zrange : 根据有序集合的索引获取元素
    3. zrangebyscore : 获取有序集合内给定分值范围内的所有元素
    4. zrem : 如果成员存在有序集合中,则移除

    添加成员示例

    zadd key score member [score member ...]

    127.0.0.1:6379> zadd zset-key 600 member1
    (integer) 1
    127.0.0.1:6379> zadd zset-key 650 member2
    (integer) 1
    127.0.0.1:6379> zadd zset-key 680 member3
    (integer) 1
    127.0.0.1:6379>
    

    获取指定索引范围内的成员示例

    zrange key start stop [WITHSCORES]

    不带score

    127.0.0.1:6379> zrange zset-key 0 -1
    1) "member1"
    2) "member2"
    3) "member3"
    

    带上score

    127.0.0.1:6379>  zrange zset-key 0 -1 withscores
    1) "member1"
    2) "600"
    3) "member2"
    4) "650"
    5) "member3"
    6) "680"
    

    获取指定分值范围内的成员示例

    zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

    127.0.0.1:6379> zrangebyscore zset-key 600 650 withscores
    1) "member1"
    2) "600"
    3) "member2"
    4) "650"
    

    移除成员示例

    zrem key member [member ...]

    127.0.0.1:6379> zrem zset-key member1
    (integer) 1
    127.0.0.1:6379> zrange zset-key 0 -1 withscores
    1) "member2"
    2) "650"
    3) "member3"
    4) "680"
    127.0.0.1:6379>
    

    简记方式:

    字符串, key - value

    列表与集合 ,类似链表,一个有序,一个无序,一个键存储多个值;

    散列与有序集合,类似字典,map;储存多个 key-value; 有序集合的key 为member, value 为 score ,按照分值排序;

  • 相关阅读:
    实现IEnumberable接口和IEnumberator
    XAML-1
    Java基础00-Java概述1
    详解Lombok中的@Builder用法
    stream之map的用法
    stream之forEach的用法
    Java中map.getOrDefault()方法的使用
    BiPredicate的test()方法
    Function.identity()
    java 8 lamda Stream的Collectors.toMap 参数
  • 原文地址:https://www.cnblogs.com/zszxz/p/12486253.html
Copyright © 2020-2023  润新知