• Redis的基本操作


    客户端登录

    命令 说明 举例 备注
    redis-cli 启动客户端 redis-cli –p 端口号 连接指定的端口号 直接执行的话,默认端口号就是6379;
    ping 测试联通 回复pong 代表联通
    exit 退出客户端
    redis-cli shutdown 停止服务器 redis-cli -h 127.0.0.1 -p 6379shutdown 停止指定ip 指定端口号的服务器 redis 是通过客户端发送停止服务器的命令

    数据库连接操作

    命令 说明 举例 备注
    select 切换数据库 切换数据库select 1:切换到1 号库 开启redis 服务后,一共有16(0-15)个库,默认在0 号库
    flushdb 清空当前库
    dbsize 查看数据库数据个数
    flushall 清空全部库

    key 的操作

    Redis 中的数据以键值对(key-value)为基本存储方式,其中key 都是字符串。

    表达式 描述
    KEYS pattern 查询符合指定表达式的所有key,支持*,?等
    TYPE key 查看key 对应值的类型
    EXISTS key 指定的key 是否存在,0 代表不存在,1 代表存在
    DEL key 删除指定key
    RANDOMKEY 在现有的KEY 中随机返回一个
    EXPIRE key seconds 为键值设置过期时间,单位是秒,过期后key 会被redis 移除
    TTL key 查看key 还有多少秒过期,-1 表示永不过期,-2 表示已过期
    RENAME key newkey 重命名一个key,NEWKEY 不管是否是已经存在的都会执行,
    如果NEWKEY 已经存在则会被覆盖
    RENAMENX key newkey 只有在NEWKEY 不存在时能够执行成功,否则失败

    常用五大数据类型

    Redis 中的数据以键值对(key-value)为基本存储方式,其中key 都是字符串,这里探讨数据类型都是探讨value
    的类型。

    image-20210615104229655

    String 操作

    • String 类型是Redis 中最基本的类型,它是key 对应的一个单一值。
    • 二进制安全,不必担心由于编码等问题导致二进制数据变化。所以redis 的string 可以包含任何数据,比如jpg
      图片或者序列化的对象。
    • Redis 中一个字符串值的最大容量是512M。
    SET key value 添加键值对
    GET key 查询指定key 的值
    APPEND key value 将给定的value 追加到原值的末尾
    STRLEN key 获取值的长度
    SETNX key value 只有在key 不存在时设置key 的值
    INCR key 指定key 的值自增1,只对数字有效
    DECR key 指定key 的值自减1,只对数字有效
    INCRBY key num 自增num
    DECRBY key num 自减num
    MSET key1 value1 key2 value2… 同时设置多个key-value 对
    MGET key1 key2 同时获取一个或多个value
    MSETNX key1 value1 key2 value2 当key 不存在时,设置多个key-value 对
    GETRANGE key 起始索引结束索引 获取指定范围的值,都是闭区间
    SETRANGE key 起始索引value 从起始位置开始覆写指定的值
    GETSET key value 以新换旧,同时获取旧值
    SETEX key 过期时间value 设置键值的同时,设置过期时间,单位秒

    list 操作

    在Java 中list 一般是单向链表,如常见的Arraylist,只能从一侧插入,

    在Redis 中,list 是双向链表。可以从两侧插入。

    可以简单理解为两端开口的,两端都可以进出。使用一个动画来演示。

    常见操作:

    • 遍历:遍历的时候,是从左往右取值;
    • 删除:弹栈,POP;
    • 添加:压栈,PUSH ;

    Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右
    边)。它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

    LPUSH/RPUSH key value1 value2… 从左边/右边压入一个或多个值头尾效率高,中间效率低
    LPOP/RPOP key 从左边/右边弹出一个值,值在键在,值光键亡弹出=返回+删除
    LRANGE key start stop 查看指定区间的元素,正着数:0,1,2,3,... 倒着数:-1,-2,-3,...
    LINDEX key index 按照索引下标获取元素(从左到右)
    LLEN key 获取列表长度
    LINSERT key BEFORE|AFTER value newvalue 在指定value 的前后插入newvalue
    LREM key n value 从左边删除n 个value
    LSET key index value 把指定索引位置的元素替换为另一个值
    LTRIM key start stop 仅保留指定区间的数据
    RPOPLPUSH key1 key2 从key1 右边弹出一个值,左侧压入到key2

    set 操作

    set 是无序的,且是不可重复的。

    SADD key member [member ...] 将一个或多个member 元素加入到集合key 当中,已经存在于集合的member 元素将被忽略。
    SMEMBERS key 取出该集合的所有值
    SISMEMBER key value 判断集合是否为含有该值,有返回1,没有返回0
    SCARD key 返回集合中元素的数量
    SREM key member [member ...] 从集合中删除元素
    SPOP key [count] 从集合中随机弹出count 个数量的元素,count 不指定就 弹出1 个
    SRANDMEMBER key [count] 从集合中随机返回count 个数量的元素,count 不指定就 返回1 个
    SINTER key [key ...] 将指定的集合进行“交集”操作
    SINTERSTORE dest key [key ...] 取交集,另存为一个set
    SUNION key [key ...] 将指定的集合执行“并集”操作
    SUNIONSTORE dest key [key ...] 取并集,另存为set
    SDIFF key [key ...] 将指定的集合执行“差集”操作
    SDIFFSTORE dest key [key ...] 取差集,另存为set

    hash 操作

    Hash 数据类型的键值对中的值是“单列”的,不支持进一步的层次结构。

    field:value
    "k01":"v01"
    "k02":"v02"
    key "k03":"v03"
    "k04":"v04"
    "k05":"v05"
    "k06":"v06"
    "k07":"v07"

    从前到后的数据对应关系

    JSON

    stu:{"stu_id":10,"stu_name":"tom","stu_age":30}
    

    Java

    public class Student {
    private Integer stuId;//10
    private String stuName;//"tom"
    private Integer stuAge;//30
    ...
    }
    Student stu=new Student()’
    stu.setStuId=10;
    stu.setStuName=”tom”;
    stu.setStuAge=30;
    

    Redis hash

    key value(hash)
    stu_id 10
    stu stu_name tom
    stu_age 30

    常用操作:

    HSET key field value 为key 中的field 赋值value
    HMSET key field value [field value ...] 为指定key 批量设置field-value
    HSETNX key field value 当指定key 的field 不存在时,设置其value
    HGETALL key 获取指定key 的所有信息(field 和value)
    HKEYS key 获取指定key 的所有field
    HVALS key 获取指定key 的所有value
    HLEN key 指定key 的field 个数
    HGET key field 从key 中根据field 取出value
    HMGET key field [field ...] 为指定key 获取多个filed 的值
    HEXISTS key field 指定key 是否有field
    HINCRBY key field increment 为指定key 的field 加上增量increment

    zset 操作

    zset 是一种特殊的set(sorted set),在保存value 的时候,为每个value 多保存了一个score 信息。根据score
    信息,可以进行排序。

    这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可
    以是重复了

    ZADD key [score member ...] 添加
    ZSCORE key member 返回指定值的分数
    ZRANGE key start stop [WITHSCORES] 返回指定区间的值,可选择是否一起返回scores
    ZRANGEBYSCORE key min max [WITHSCORES]
    [LIMIT offset count]
    在分数的指定区间内返回数据,从小到大排列
    ZREVRANGEBYSCORE key max min
    [WITHSCORES] [LIMIT offset count]
    在分数的指定区间内返回数据,从大到小排列
    ZCARD key 返回集合中所有的元素的数量
    ZCOUNT key min max 统计分数区间内的元素个数
    ZREM key member 删除该集合下,指定值的元素
    ZRANK key member 返回该值在集合中的排名,从0 开始
    ZINCRBY key increment value 为元素的score 加上增量
    努力学习java的Cherish
  • 相关阅读:
    配置SecondaryNameNode
    hadoop 根据secondary namenode恢复namenode
    Hadoop如何修改HDFS文件存储块大小
    hadoop1.2.1 datanode 由于权限无法启动 expected: rwxr-xr-x
    CentOS 7 下,如何设置DNS服务器
    Eclipse+pydev环境搭建
    Python numpy
    Leetcode#54 Spiral Matrix
    Leetcode#53 Maximum Subarray
    Leetcode#40 Combination Sum II
  • 原文地址:https://www.cnblogs.com/cherish-code/p/14885230.html
Copyright © 2020-2023  润新知