• redis 安装、常用数据结构以及相关命令


    一、redis 简介

    1、什么是 redis?

      redis 是一个开源免费的高性能的 key - value 数据库。
      支持数据持久化,即可以将内存的数据存储在磁盘中,重启服务后可以再次加载磁盘中的数据并使用。
      支持多种类型,比如:String(字符串)、List(列表)、Set(集合)、zset(有序集合)、Hash(散列) 等。
      支持数据备份,主从模式的数据备份(master - slave)。
      redis 所有操作都是原子性的,即要么成功执行,要么不执行。
    官网:
      https://redis.io/

    2、安装 redis

    (1)使用 docker 安装、使用 redis

    【参考地址:(Linux(CentOS7) 上安装 docker)】
        https://www.cnblogs.com/l-y-h/p/12622730.html#_label0
        
    【参考地址:(ocker 安装 Redis)】
        https://www.cnblogs.com/l-y-h/p/12622730.html#_label6

    (2)Centos7 编译安装 redis 5.0.8
      Step1:下载 redis 包。

    【官网下载地址:】
        https://redis.io/download
        http://download.redis.io/releases/redis-5.0.8.tar.gz
        
    【在 Linux 内部直接下载:】
        [root@localhost local]# wget http://download.redis.io/releases/redis-5.0.8.tar.gz

      

      Step2:解压、编译。

    【解压:】
        [root@localhost local]# tar -zxvf redis-5.0.8.tar.gz 
        
    【进入解压后的目录,并编译(前提 系统内部已经安装了 gccmake 等程序):】
        [root@localhost local]# cd redis-5.0.8/
        [root@localhost local]# make
        
    【编译完后:进入 src 目录,可以看到 redis-server、redis-cli 等程序】
        [root@localhost redis-5.0.8]# cd src/

      Step3:开启服务程序(redis-server),并使用内置客户端( redis-cli) 进行交互。

    【开启服务程序(redis-server):】
        方式一: 
            ./redis-server       根据默认配置文件启动 redis
        方式二:
            ./redis-server   ../redis.conf      根据指定的配置文件(可以自定义配置文件位置)启动 redis
    
    【开启客户端进行交互(redis-cli):】
        ./redis-cli

      通过 xShell 使用一个连接以前台模式启动一个 redis 服务。

      另开一个 xShell 连接,执行 redis-cli,在安装包的 src 目录下 执行 ./redis-cli。

       Step4:关闭服务

    【在 redis-cli 中输入指令】
        [root@localhost src]# ./redis-cli shutdown

    3、redis 可视化工具下载

    (1)官网下载(要收费的)
      地址:https://redisdesktop.com/pricing

    (2)破解版下载(白嫖)
      链接:https://pan.baidu.com/s/1v3ZJEdzEGBIf5gYGsyhRBw
      提取码:ubhz
    或者
      http://www.downza.cn/soft/210734.html

    二、redis 中 键(key) 相关命令

      命令不区分大小写,但数据区分大小写。

    1、keys(用于查看 key 列表)

    【格式:】
        keys pattern         用于查找 匹配 pattern 格式的 key
    
    【举例:】
        127.0.0.1:6379> keys *

    2、del(用于删除某个键)

    【格式:】
        del key           当 key 存在时,删除 key,返回 1。key 不存在时,忽略,返回 0。
        
    【举例:】
        127.0.0.1:6379> del a

    3、exists(判断某个键是否存在)

    【格式:】
        exists key          用于判断某个 key 是否存在,存在返回 1,不存在返回 0
        
    【举例:】
        127.0.0.1:6379> exists b

    4、type(返回指定 key 存储值的类型)

    【格式:】
        type key          用于判断某个 key 的类型
    
    【举例:】
        127.0.0.1:6379> type c

    5、rename、renamenx(用于给 key 修改名字)

    【rename 格式:】
        rename old_key_name new_key_name      用于修改 key 名。
    注:
        若 old_key_name 不存在时,会返回一个错误。
        若 new_key_name 存在时,则覆盖旧值,返回 OK。 
    
    【renamenx 格式:】
        renamenx old_key_name new_key_name      用于修改 key 名
    注:
        若 old_key_name 不存在时,会返回一个错误。
        若 new_key_name 存在时,则不会修改,返回 0。 
    
    【举例:】
        127.0.0.1:6379> rename a e
        127.0.0.1:6379> renamenx a e

    6、randomkey(随机返回当前库的一个 key)

    【格式:】
        randomkey          随机返回当前库中的 一个 key,若当前库没有数据,则返回 null。
    
    【举例:】
        127.0.0.1:6379> randomkey

    三、redis 数据类型 -- String 以及常用命令

    1、String(字符串)

      最基本的 类型,一个 key 对应 一个 value。
      是二进制安全的,可以存储任何数据(比如图片),存储最大值为 512 MB。

    2、set(给指定 key 设置一个 String 类型的 value,无视类型直接覆盖)

    【格式:】
        set key value              给 key 设置一个 value 值。
        
    【举例:】
         127.0.0.1:6379> set b world

    3、get(获取指定 key 的 value 值)

    【格式:】
        get key          用于返回 key 的值,
    注:
        若 key 不存在,则返回 null,
        若 key 存储的不是 string 型数据,则返回一个错误
        
    【举例:】
        127.0.0.1:6379> get b

    4、getrange(截取 key 存储的 value 的指定位置的字符串)

    【格式:】
        getrange key start end         截取字符串,包括 start、end(从 0 开始计数)。
        
    【举例:】
        127.0.0.1:6379> getrange a 0 -1
        127.0.0.1:6379> getrange a 3 7

    5、getset(设置指定 key 的 value 值)

    【格式:】
        getset key value      设置指定 key 的 value 值
    注:
        当 key 不存在时,返回 null
        当 key 的 value 不是 string 型时,返回 一个错误(与 set 有区别)。
    
    【举例:】
        127.0.0.1:6379> getset a world

    6、mget(一次获取多个 key 的 value 值)

    【格式:】
        mget key1 [key2]                  一次获取多个 key 的值
    注:
        若 key 的 value 不属于 string,会返回 null。
        若 key 不存在,返回 null。
    
    【举例:】
        127.0.0.1:6379> mget a b  

    7、mset、msetnx(一次设置多个 key - value 键值对)

    【mset 格式:】
        mset key1 value1 [key2 value2]       一次设置多个 key - value 键值对
        
    【msetnx 格式:】
        msetnx key1 value1 [key2 value2]       一次设置多个 key - value 键值对
    注:
        key 不存在时才能成功设置。
        
    【举例:】
        127.0.0.1:6379> mset a hello b world
        127.0.0.1:6379> msetnx c java d python

    8、setnx(当 key 不存在时,设置值)

    【格式:】
        setnx key value       添加一个 从不存在的 key - value 键值对
    注:
        若 key 存在,则不会设置 value 值,返回 0.
        若 key 不存在,则设置 value 值,返回 1.

    9、append(给指定 key 的 value 追加字符串)

    【格式:】
        append key value       给指定 key 追加字符串
    注:
        若 key 不存在,则等同于 set key value.
        若 key 存在,则 向其 value 末尾 追加 字符串。
    
    【举例:】
        127.0.0.1:6379> append a world

    10、incr、incrby、decr、decrby(增加、减少 数值类型的 value 值)

    【格式:】
        incr key                给 key 的 value 加 1
        incrby key value        给 key 的 value 加 指定的 value 
        decr key                给 key 的 value 减 1
        decrby key value        给 key 的 value 减 指定的 value
    注:
        value 的值必须是能转为 数值 型的字符串才可以成功执行
    
    【举例:】
        127.0.0.1:6379> incr b
        127.0.0.1:6379> decr b
        127.0.0.1:6379> incrby b 20
        127.0.0.1:6379> decrby b 10

    11、strlen(获取指定 key 的 value 字符串的长度)

    【格式:】
        strlen key         获取 指定 key 的 value 存储的 字符串的长度
        
    【举例:】
        127.0.0.1:6379> strlen a

    四、redis 数据类型 -- Hash 以及常用命令

    1、Hash(散列、哈希)

      是一个 string 类型 key(指哈希表名) 的 field - value 集合。适合用于存储对象。
      可以存储 2^32 -1 个 key - value 键值对。

    2、hkeys(获取指定哈希表 key 的 所有的字段 field)

    【格式:】
        hkeys key      用于获取指定 key 的所有 field。
    注:
        若 key 不存在,则提示一个空列表信息。
    
    【举例:】
        127.0.0.1:6379> hkeys test

    3、hset(给 哈希表中的 字段 赋值)

    【格式:】
        hset key field value     给 key 这个哈希表的 field 字段 赋值 为 value。
    注:
        若 key 不存在,则会创建。
        若 field 重复,则新值会覆盖旧值。
    
    【举例:】
        127.0.0.1:6379> hset test a helloworld

    4、hmset(同时设置 多个 field - value 到指定的 key 中)

    【格式:】
        hmset key field1 value1 [field2 value2]      同时设置多个 field - value 对到 哈希表 key 中
    注:
        若 field 重复,则新值覆盖旧值。
    
    【举例:】
        127.0.0.1:6379> hmset test a hello d world

    5、hget、hmget、hgetall(获取哈希表 key 的 field - value值)

    【hget 格式:】
        hget key field         用于返回 指定哈希表 key 中指定 字段 field 的 value 值
        
    【hmget 格式:】
        hmget key field1 [field2]    用于一次返回一个或多个 field 的 value 值
        
    【hgetall 格式:】
        hgetall key            返回指定 key 下所有 的 field -value
        
    【举例:】
        127.0.0.1:6379> hget test a
        127.0.0.1:6379> hmget test a b c e
        127.0.0.1:6379> hgetall test

    6、hvals(获取指定 key 下所有的 field 对应的 value)

    【格式:】
        hvals key           返回指定 key 下所有的 field 对应的 value 值
        
    【举例:】  
        127.0.0.1:6379> hvals test

    7、hlen(获取指定 key 中 field 的数量)

    【格式:】
        hlen key       获取 指定 哈希表 key 中 field 的总数
    
    【举例:】
        127.0.0.1:6379> hlen test

    8、hdel (删除指定 key 中一个或多个 field)

    【格式:】
        hdel key field1 [field2]     删除指定哈希表 key 中 指定的 field 字段
        
    【举例:】
        127.0.0.1:6379> hdel test a

    9、hexists(判断指定 key 中是否存在 field)

    【格式:】
        hexists key field      判断指定哈希表 key 中是否存在 field,不存在返回 0,存在返回 1。
    
    【举例:】
        127.0.0.1:6379> hexists test a

    五、redis 数据类型 -- List 以及常用命令

    1、List(列表)

      是字符串 的列表,按照插入顺序排序,一个 key 对应 多个 value。
      可以存储 2^32 - 1 个 value 元素。

    2、lpush、lpushx(将一个或多个值插入列表的头部)

    【lpush 格式:】
        lpush key value1 [value2]          
    注:
        将 value 插入 列表的头部,若 key 不存在,则创建一个 key
    
    【lpushx 格式:】
        lpush key value1 [value2]         
    注:
        将 value 插入 列表的头部,若 key 不存在,则添加失效,并返回一个 空列表信息。
                
    【举例:】
        127.0.0.1:6379> lpush test 1 2
        127.0.0.1:6379> lpushx test 3 4

    3、rpush、rpushx(将一个或多个值插入列表的尾部)

    【rpush 格式:】
        rpush key value1 [value2]          
    注:
        将 value 插入 列表的头部,若 key 不存在,则创建一个 key
    
    【rpushx 格式:】
        rpush key value1 [value2]         
    注:
        将 value 插入 列表的头部,若 key 不存在,则添加失效,并返回一个 空列表信息。
                
    【举例:】
        127.0.0.1:6379> rpush test 1 2
        127.0.0.1:6379> rpushx test 3 4

    4、lrange(返回指定范围的 list 列表)

    【格式:】
        lrange key start end
    注:
        返回指定范围 内的 list 列表,其中 -1 表示倒数第一个数,0 表示第一个数
    
    【举例:】
        127.0.0.1:6379> lrange test 0 -1
        127.0.0.1:6379> lrange test -3 3

    5、llen(获取列表的长度)

    【格式:】
        llen key 
    注:
        返回一个列表的长度,若 key 不存在,则返回 0 。
    
    【举例:】
        127.0.0.1:6379> llen test

    6、lindex(用于获取列表中指定下标的元素)

    【格式:】
        lindex key index
    注:
       返回 list 中指定下标 index 的元素,其中 -1 表示倒数第一个数,0 表示第一个数
    
    【举例:】
        127.0.0.1:6379> lindex test 0
        127.0.0.1:6379> lindex test -1

    7、lpop(从列表头部移除第一个元素)

    【格式:】
        lpop key         从 key 头部移除第一个元素,key不存在时返回 null
        
    【举例:】
        127.0.0.1:6379> lpop test

    8、rpop(从列表的尾部移除最后一个元素)

    【格式:】
        rpop key         从 key 尾部移除最后一个元素,key不存在时返回 null
        
    【举例:】
        127.0.0.1:6379> rpop test

    9、lset(通过 列表的下标去设置 元素值)

    【格式:】
        lset key index value
    注:
        设置 list 中指定下标 index 的元素,其中 -1 表示倒数第一个数,0 表示第一个数
    
    【举例:】
        127.0.0.1:6379> lset test 0 hello

    10、ltrim(截取列表中指定范围的元素)

    【格式:】
        ltrim key start end
    注:
        截取列表中指定范围的元素,不在范围的元素会删除。其中 -1 表示倒数第一个数,0 表示第一个数
        
    【举例:】
        127.0.0.1:6379> ltrim test 1 3

    六、redis 数据类型 -- Set 以及常用命令

    1、Set(集合)

      是字符串 的无序集合,元素不重复且无序。
      一个 key 对应 多个 value。可以存储 2^32 -1 个 value 元素。

    2、sadd(添加一个或多个元素到集合中)

    【格式:】
        sadd key value1 [value2]
    注:
        添加一个或多个元素到集合key 中,重复元素不会被添加。
                
    【举例:】
        127.0.0.1:6379> sadd test 1 2 3 1 2

    3、smembers(用于返回集合的所有元素)

    【格式:】
        smembers key
    注:
        返回指定集合 key 的所有元素,若 key 不存在,返回 (empty list or set)
        
    【举例:】
        127.0.0.1:6379> smembers test

    4、scard(用于返回当前集合中元素的个数)

    【格式:】
        scard key
    注:
        返回指定 key 的元素的个数。
        
    【举例:】
        127.0.0.1:6379> scard test

    5、sismember(判断集合中是否包含某元素)

    【格式:】
        sismember key value
    注:
        判断集合 key 中是否存在 某元素 value
        
    【举例:】
        127.0.0.1:6379> sismember test 4

    6、srem(移除一个或多个元素)

    【格式:】
        srem key value1 [value2]
    注:
        移除一个或多个元素,根据值来匹配。
        
    【举例:】
        127.0.0.1:6379> srem test 2 3 4

    7、spop(随机移除一个或多个元素)

    【格式:】
        spop key [count]
    注:
        count 表示 移除的元素个数,默认为 1,若 key 不存在,返回 null。
            
    【举例:】
        127.0.0.1:6379> spop test 6
        127.0.0.1:6379> spop test

     8、srandmember(随机返回一个或多个元素)

    【格式:】
        srandmember key [count]
    
    【举例:】
        127.0.0.1:6379> srandmember test 4

    9、smove(将指定元素从一个集合移动到另一个集合)

    【格式:】
        smove source destination member
    注:
        将 member 元素 从 source 集合 移动到 destination 集合中。
    
    【举例:】
        127.0.0.1:6379> smove test test1 4

    七、redis 数据类型 -- zSet 以及常用命令

    1、zset(有序集合)

      是字符串 的有序集合,元素不重复且有序,
      内部维护一个 double 类型的分数,根据该值对元素进行排序,double 值可以重复。
      一个 key 对应 多个 value。可以存储 2^32 - 1 个 value 元素。

    2、zadd(添加一个或多个元素到集合中)

    【格式:】
        zadd key score1 value1 [score2 value2]
    注;
        score 为指定的整数或分数,用来排序。
        添加一个或多个元素到集合中,若已存在元素,则会覆盖旧的 score。
    
    【举例:】
        127.0.0.1:6379> zadd test 2 hello 1 world 3 helloworld

    3、zrange、zrevrange(返回指定范围的集合元素)

    【zrange 格式:】
        zrange key start end [withscores]
    注:
        按照元素的 score 增序排列。
        withscores 表示显示 元素的 score。
        其中 -1 表示倒数第一个数,0 表示第一个数。
    
    【zrevrange 格式:】
        zrevrange key start end [withscores]
    注:
        按照元素的 score 降序排列。
    
    【举例:】    
        127.0.0.1:6379> zrange test 0 -1
        127.0.0.1:6379> zrange test 0 -1 withscores

    4、zcard、zcount(获取集合中元素的个数)

    【zcard 格式:】
        zcard key
    注:
        获取指定 key 的所有元素的个数
    
    【zcount 格式:】
        zcount key min max
    注:
        获取指定 key 的 指定 分数范围内的元素的个数。
    
    【举例:】
        127.0.0.1:6379> zcard test
        127.0.0.1:6379> zcount test 1.5 4.6

    5、zscore(返回指定元素的 score 分数值)

    【格式:】
        zscore key member
    注:
        返回指定 member 在 指定 key 中的 score.
        
    【举例:】
        127.0.0.1:6379> zscore test hello

    6、zrem(移除一个或多个元素)

    【格式:】
        zrem key member1 [member2]
    注:
        从集合中移除 一个 或 多个 member。
        
    【举例:】
        127.0.0.1:6379> zrem test world hello

    7、zrank、zrevrank(获取指定元素在集合中的排名)

    【zrank 格式:】
        zrank key member
    注:
        按照 score 升序排列,并返回 member 在此序列中的排名。
        其中,0 表示第一名,依次递增。
    
    【zrevrank 格式:】
        zrevrank key member
    注:
        按照 score 降序排列,并返回 member 在此序列中的排名。
    
    【举例:】
        127.0.0.1:6379> zrank test java
        127.0.0.1:6379> zrevrank test java

    8、zremrangebyrank、zremrangebyscore(按照指定的范围移除元素)

    【zremrangebyrank 格式:】
        zremrangebyrank key start end
    注:
        按照 排名,移除 [start, end] 区间内的元素。
    
    【zremrangebyscore 格式:】
        zremrangebyscore key min max
    注:
        按照 分数值,移除 [min, max] 区间内的元素    
        
    【举例:】
        127.0.0.1:6379> zremrangebyrank test1 2 3
        127.0.0.1:6379> zremrangebyscore test2 2 100

  • 相关阅读:
    资料网站
    HTML、CSS部分
    面试题三
    面试题二
    面试题一
    上学时的HTML+JS+CSS(小总结)
    01.策略模式-上篇
    【解决方案】HTTP could not register URL http://+:6001/
    【问题与思考】1+"1"=?
    WCF安全3-Transport与Message安全模式
  • 原文地址:https://www.cnblogs.com/l-y-h/p/12656614.html
Copyright © 2020-2023  润新知