美文网首页
redis安装 & 数据类型

redis安装 & 数据类型

作者: 慕知 | 来源:发表于2021-03-21 19:09 被阅读0次

    一,缓存数据库介绍

    1,缓存数据库用处

    1,提升访问速度
    2,减少数据库访问过多导致负荷
    
    

    2,常用的缓存数据库

    Memcached:
    优点:免费,知识分布式,支持多核多线程
    缺点:支持的数据类型单一;数据量到了一定量且当时访问量也增加的时候,无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复
    杂度高。
    
    Redis:
    优点:数据类型丰富;在大数据面前,延时很低;
    缺点:不支持多核多线程,但是可以使用多实例避免此情况
    
    tair(淘宝开发)
    优点:支持分布式,支持多核,数据类型丰富
    缺点:生态系统做的不是很好(遇到问题百度搜索基本找不到,需要自己解决)
    
    

    3,redis介绍

    redis没有windows版本(一般服务器都是linus版本)
    
    
    特点:
    1,高性能(高速度读写);
    2,数据类型丰富;
    3,支持持久化;
    4,回收策略(a=b,比如设置过期时间1小时,数据库更新a=c,1个小时候会重新去数据库读取最新数据);
    5,支持简易版消息队列(支持阻塞式读取,可以很容易的实现
    一个高性能的优先队列);
    6,支持高可用(支持故障自动转移);
    
    

    二,redis安装

    官网  https://redis.io/
    
    企业一般使用5. 版本(较稳定)
    
    
    
    
    1,下载链接
    [root@\ redis~]# wget https://download.redis.io/releases/redis-6.2.1.tar.gz
    
    
    
    2,解压包
    [root@\ redis~]# tar -xf redis-6.2.1.tar.gz -C /usr/local/
    
    
    
    3,编译安装
    (Redis 是跨平台的缓存服务器,所以在不同的平台上安装各异。一般情况下我们需要下载源码包带主机
    上,然后解压并编译,从而得到 redis-server 启动文件)
    
    
    [root@\ redis/usr/local/redis-6.2.1]# cd /usr/local/redis-6.2.1/
    [root@\ redis/usr/local/redis-6.2.1]# yum -y install centos-release-scl
    
    
    [root@\ redis/usr/local/redis-6.2.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
    [root@\ redis/usr/local/redis-6.2.1]# scl enable devtoolset-9 bash
    
    
    
    
    [root@\ redis/usr/local/redis-6.2.1]# make
    [root@\ redis/usr/local/redis-6.2.1]# make PREFIX=/usr/local/redis install  && make install
    
    
    
    4,复制配置文件
    [root@\ redis/usr/local/redis-6.2.1]# mkdir etc
    [root@\ redis/usr/local/redis-6.2.1]# cp /usr/local/redis-6.2.1/redis.conf  etc/
    
    
    5,修改配置文件
    [root@\ redis/usr/local/redis-6.2.1]# vim etc/redis.conf
    ...
    
    daemonize yes  # daemonize no修改为 daemonize yes
    ...
    # 是否要用守护线程的方式启动
    
    
    
    
    6,Redis 根目录下入环境变量
    [root@\ redis/usr/local/redis-6.2.1]# vim ~/.bash_profile
    ...
    # 增加以下
    REDIS_HOME=/usr/local/redis-6.2.1
    PATH=$PATH:$REDIS_HOME/bin
    export PATH
    
    
    
    [root@\ redis/usr/local/redis-6.2.1]# source ~/.bash_profile
    
    
    7,注册 Redis 服务
    [root@\ redis/usr/local/redis-6.2.1]# cat > /usr/lib/systemd/system/redis.service << EOF
    [Unit]
    Description=Redis
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/redis_6379.pid
    ExecStart=/usr/local/redis-6.2.1/bin/redis-server /usr/local/redis-6.2.1/etc/redis.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    
    
    
    8,启动redis
    [root@\ redis/usr/local/redis-6.2.1]# systemctl daemon-reload
    [root@\ redis/usr/local/redis-6.2.1]# systemctl start redis
    [root@\ redis/usr/local/redis-6.2.1]# systemctl status redis
    
    9,连接
    [root@\ redis/usr/local/redis-6.2.1]# redis-cli -h 127.0.0.1
    
    
    

    命令行模式

    # 进入命令行模式
    redis-cli
        # 参数
            -h : 指定连接redis服务器的IP,默认是127.0.0.1
            -a : 指定redis密码,默认redis没有密码
            -p : 指定redis端口号,默认redis的端口号是6379
            --raw : 支持中文
    
    

    三,redis数据结构

    1,字符串

    #连接redis (默认本机,可修改配置bind)
    [root@\ db03~]# redis-cli -h 127.0.0.1
    
    
    # 设置数据
    127.0.0.1:6379> set name zx
    OK
    127.0.0.1:6379> get name
    "zx"
    
    
    #设置过期时间为秒
    127.0.0.1:6379> set name zxx ex 10
    OK
    127.0.0.1:6379> ttl name
    (integer) 3        #   还剩3秒过期
    127.0.0.1:6379> ttl name
    (integer) -2       #   -2代表过期
    
    
    
    
    
    # set 和 ex 合并成 setex
    127.0.0.1:6379> setex name 5  zx
    OK
    
    
    # 设置过期时间为毫秒
    127.0.0.1:6379> set name zx px 20
    OK
    127.0.0.1:6379> psetex name 20 zx
    OK
    
    
    
    2,
    Nx:当 key 不存在时创建,已存在则忽略。
    Xx:当 key 存在则更新,不存在则忽略。
    
    127.0.0.1:6379> set name zxx nx
    OK
    127.0.0.1:6379> set name zxx nx
    (nil)
    
    127.0.0.1:6379> setnx age 18         #合并使用
    (integer) 1
    
    127.0.0.1:6379> set agee 11 xx
    (nil)
    127.0.0.1:6379> set name zxx xx
    OK
    
    
    
    
    
    3,批量设置(查询)
    # mset 设置多个值
    127.0.0.1:6379> mset key1 value1 key2 value2
    OK
    
    # 获取多个值
    127.0.0.1:6379> mget key1 key2
    1) "value1"
    2) "value2"
    
    
    
    
    
    
    4,删除数据
    127.0.0.1:6379> del age
    (integer) 1
    
    127.0.0.1:6379> del b3 b4        #可以多个一起删除
    (integer) 2
    
    
    
    
    
    
    
    5,更改数据(set 在没有数据的情况下,建数据;有数据的情况更新数据)
    127.0.0.1:6379> set name zx
    OK
    127.0.0.1:6379> set name egon
    OK
    127.0.0.1:6379> get name
    "egon"
    
    
    
    
    
    6,  getset : 先获取数据然后更新
    127.0.0.1:6379> getset name alex
    "egon"
    127.0.0.1:6379> get name
    "alex"
    
    
    
    
    
    
    
    7, SETRANGE指定下标更新数据 ,从alex的第四个字符后面增加zxx
    127.0.0.1:6379> get name
    "alex"
    127.0.0.1:6379> SETRANGE name 4 zxx
    (integer) 7
    127.0.0.1:6379> get name
    "alexzxx"
    
    
    
    
    
    
    
    
    8, 指定key递增
    127.0.0.1:6379> incr num
    (integer) 1
    127.0.0.1:6379> incr num
    (integer) 2
    127.0.0.1:6379> incr num
    (integer) 3
    127.0.0.1:6379> incr num
    (integer) 4
    
    
    # 递增指定长度
    127.0.0.1:6379> incrby key0  8
    (integer) 8
    127.0.0.1:6379> incrby key0  8
    (integer) 16
    127.0.0.1:6379> incrby key0  8
    (integer) 24
    
    
    
    8, 指定key递减
    127.0.0.1:6379> decr num
    (integer) 3
    127.0.0.1:6379> decr num
    (integer) 2
    127.0.0.1:6379> decr num
    (integer) 1
    
    
    
    # 指定递减长度
    127.0.0.1:6379> decrby key0  2
    (integer) 22
    127.0.0.1:6379> decrby key0  2
    (integer) 20
    127.0.0.1:6379> decrby key0  2
    (integer) 18
    
    
    
    9,append最后面追加
    
    127.0.0.1:6379> get key1
    "value1"
    127.0.0.1:6379> append key1 345
    (integer) 9
    127.0.0.1:6379> get key1
    "value1345"
    
    
    
    
    10,查看字符长度
    127.0.0.1:6379> get name
    "alexzxx"
    
    127.0.0.1:6379> STRLEN name
    (integer) 7
    
    
    
    
    
    11,从指定位置截取字符串(不会永久改变原字符串值)
    127.0.0.1:6379> get name
    "alexzxx"
    
    
    127.0.0.1:6379> GETRANGE name 0 3
    "alex"
    

    Redis数据结构之hash

    hash  一个key  多个属性
    
    
    
    
    
    # 查看帮助
    127.0.0.1:6379> help @hash
    
    
    
    127.0.0.1:6379> hset people name egon age 18 add shanghai
    (integer) 3
    127.0.0.1:6379> hget people name
    "egon"
    
    
    # 查看hash类型的key中的属性是否存在
    127.0.0.1:6379> hexists people age
    (integer) 1
    127.0.0.1:6379> hexists people gender
    (integer) 0
    
    
    
    # hsetnx 不存在则创建,存在则忽略
    127.0.0.1:6379> hsetnx people  phone 133
    (integer) 1
    127.0.0.1:6379> hget people phone
    "133"
    
    
    127.0.0.1:6379> hget people name
    "egon"
    127.0.0.1:6379> hsetnx people name zxx
    (integer) 0
    127.0.0.1:6379> hget people name
    "egon"
    
    
    
    
    
    
    
    
    # hdel删除hash中的某一个属性
    # del 删除redis当中的某一个key
    127.0.0.1:6379> hget people age
    "18"
    127.0.0.1:6379> hdel people age
    (integer) 1
    127.0.0.1:6379> hget people age
    (nil)
    
    
    
    
    # 更改hash属性
    127.0.0.1:6379> hset people name zxx
    (integer) 0
    127.0.0.1:6379> hget people name
    "zxx"
    
    
    
    
    # 获取多个hash属性值
    127.0.0.1:6379> hmget people name add
    1) "zxx"
    2) "shanghai"
    
    
    
    # mget
    127.0.0.1:6379> keys *
    1) "people"
    2) "num"
    3) "key8"
    4) "key0"
    5) "key4"
    6) "key1"
    
    127.0.0.1:6379> mget key0  key1
    1) "18"
    2) "value1345"
    
    
    
    
    
    # hgetall ,获取hash类型下的某个key中的所有属性及值
    127.0.0.1:6379> hgetall people
    1) "name"
    2) "zxx"
    3) "add"
    4) "shanghai"
    5) "gender"
    6) "man"
    7) "phone"
    8) "133"
    
    
    
    
    # hkeys ,只获取hash类型下的key中所有的属性
    127.0.0.1:6379> hkeys people
    1) "name"
    2) "add"
    3) "gender"
    4) "phone"
    
    
    
    # hvals,只获取hash类型下的key中所有的属性的值
    127.0.0.1:6379> hvals people
    1) "zxx"
    2) "shanghai"
    3) "man"
    4) "133"
    
    
    
    
    # hincrby 累加并返回hash类型中的某个属性的的值
    127.0.0.1:6379> HINCRBY people id 1
    (integer) 1
    127.0.0.1:6379> HINCRBY people id 1
    (integer) 2
    127.0.0.1:6379> HINCRBY people id 1
    (integer) 3
    
    127.0.0.1:6379> hvals people
    1) "zxx"
    2) "shanghai"
    3) "man"
    4) "133"
    5) "3"
    
    
    
    
    
    # hincrbyfloat ,小数累加并返回hash类型中的某个属性的的值(hincrbyfloat存在数据计算精度问题)
    127.0.0.1:6379> HINCRBYFLOAT people id 10.8
    "13.8"
    127.0.0.1:6379> HINCRBYFLOAT people id 10.8
    "24.6"
    127.0.0.1:6379> HINCRBYFLOAT people id 10.8
    "35.4"
    
    
    
    
    
    
    # 负数递减(不支持小数)
    127.0.0.1:6379> hincrby  people num 1
    (integer) 1
    127.0.0.1:6379> hincrby  people num 1
    (integer) 2
    127.0.0.1:6379> hincrby  people num -3
    (integer) -1
    
    
    
    
    
    
    # 获取hash类型的属性有多少个
    127.0.0.1:6379> hlen people
    (integer) 6
    
    
    127.0.0.1:6379> hvals people
    1) "zxx"
    2) "shanghai"
    3) "man"
    4) "133"
    5) "35.4"
    6) "-1"
    
    
    
    
    
    
    #某个hash类型下的属性的长度
    127.0.0.1:6379> HSTRLEN people id
    (integer) 4
    
    
    
    
    # expire针对所有的kye设置过期时间(-1代表永久有效;-2代表过期)
    127.0.0.1:6379> ttl people
    (integer) -1
    127.0.0.1:6379> EXPIRE people 1000
    (integer) 1
    127.0.0.1:6379> ttl people
    (integer) 995
    
    
    127.0.0.1:6379> EXPIRE people 1
    (integer) 1
    127.0.0.1:6379> ttl people
    (integer) -2
    127.0.0.1:6379> hgetall people
    (empty array)
    127.0.0.1:6379> ttl people
    (integer) -2
    
    
    
    

    redis数据类型_列表

    列表  ->   一个key   ->  多个值;
    列表可以从前或者从后插入数据
    
    
    # 插入数据
             set key value
    hash类型:hset key field value
    
    
    列表从左插入lpush(先进后出):
    127.0.0.1:6379> lpush class a b c d e f g
    (integer) 7
    
    
    # 获取列表中的数据
    127.0.0.1:6379> lrange class 0 3
    1) "g"
    2) "f"
    3) "e"
    4) "d"
    
    
    # 查询列表最左边的值
    127.0.0.1:6379> LRANGE excel -1 -1
    1) "a"
    
    
    
    列表从右插入rpush(先进先出):
    127.0.0.1:6379> rpush table 1 2 3 4 5
    (integer) 5
    
    # 查处所有的值
    127.0.0.1:6379> LRANGE table 0 -1
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    
    # 查询列表中最右边的值
    127.0.0.1:6379> LRANGE table -1 -1
    1) "5"
    
    
    
    
    setnx:当一个key不存在则插入数据,存在则忽略
    hsetnx:当一个key某个属性不存在时则插入数据,存在则忽略
    lpushx:当列表存在时则插入(追加)数据
    rpushx: 当列表存在时则在列表右侧追加数据,不存在则忽略
    
    
    127.0.0.1:6379> lpushx excel 5 6 7
    (integer) 6
    127.0.0.1:6379> lrange excel 0 -1
    1) "7"
    2) "6"
    3) "5"
    4) "a"
    5) "b"
    6) "a"
    
    
    127.0.0.1:6379> lpushx table   a b c
    (integer) 8
    127.0.0.1:6379> lrange table 0 -1
    1) "c"
    2) "b"
    3) "a"
    4) "1"
    5) "2"
    6) "3"
    7) "4"
    8) "5"
    
    
    127.0.0.1:6379> rpushx table   a b c
    (integer) 11
    127.0.0.1:6379> lrange table 0 -1
     1) "c"
     2) "b"
     3) "a"
     4) "1"
     5) "2"
     6) "3"
     7) "4"
     8) "5"
     9) "a"
    10) "b"
    11) "c"
    
    
    
    # linsert 【key】 before [指定的值] 【新增的值】在指定的值前面追加数据
    127.0.0.1:6379> lrange excel 0 -1
    1) "7"
    2) "6"
    3) "5"
    4) "a"
    5) "b"
    6) "a"
    127.0.0.1:6379> linsert excel before 5 44
    (integer) 7
    
    127.0.0.1:6379> lrange excel 0 -1
    1) "7"
    2) "6"
    3) "44"
    4) "5"
    5) "a"
    6) "b"
    7) "a"
    
    127.0.0.1:6379> linsert excel before a bb
    (integer) 8
    127.0.0.1:6379> lrange excel 0 -1
    1) "7"
    2) "6"
    3) "44"
    4) "5"
    5) "bb"
    6) "a"
    7) "b"
    8) "a"
    
    
    
    # 指定的后面追加数据
    127.0.0.1:6379> linsert excel after 7 77
    (integer) 9
    127.0.0.1:6379> lrange excel 0 -1
    1) "7"
    2) "77"
    3) "6"
    4) "44"
    5) "5"
    6) "bb"
    7) "a"
    8) "b"
    9) "a"
    
    
    
    
    # 删除数据
    del:删除某个key
    hdel:删除hash类型中的中的某个属性
    lrem:删除列表中某个区间中的值(从列表左侧开始移除数据)
    
    
    lrem
    
    
    
    
    
    
    set:如果key不存在侧增加数据,存在则更新
    mset:如果hash类型中存在某个属性则更新,不存在则增加
    lset:如果列表中存在则更新,不存在则增加
    
    
    # lset
    
    127.0.0.1:6379> LRANGE table 0 -1
    1) "-1"
    2) "888"
    3) "666"
    4) "1"
    5) "2"
    6) "3"
    
    127.0.0.1:6379> lset table 2 000
    OK
    127.0.0.1:6379> LRANGE table 0 -1
    1) "-1"
    2) "888"
    3) "000"
    4) "1"
    5) "2"
    6) "3"
    
    
    
    
    
    # ltrim ,截取列表中指定范围内数据,替换到原来的数据列表之中
    127.0.0.1:6379> LRANGE table 0 -1
     1) "-1"
     2) "888"
     3) "666"
     4) "1"
     5) "2"
     6) "3"
     7) "5"
     8) "a"
     9) "b"
    10) "666"
    127.0.0.1:6379> ltrim table 0 5
    OK
    127.0.0.1:6379> LRANGE table 0 -1
    1) "-1"
    2) "888"
    3) "666"
    4) "1"
    5) "2"
    6) "3"
    
    
    
    # strlen 获取字符串的长度
    # hlen 获取hash类型中元素的格式
    # hstelen 获取hash类型中属性的长度
    
    # llen  获取列表中元素的个数
    127.0.0.1:6379> LRANGE table 0 -1
    1) "-1"
    2) "888"
    3) "000"
    4) "1"
    5) "2"
    6) "3"
    127.0.0.1:6379> llen table
    (integer) 6
    
    
    
    
    
    # lindex 根据下标获取元素
    127.0.0.1:6379> LRANGE table 0 -1
    1) "-1"
    2) "888"
    3) "000"
    4) "1"
    5) "2"
    6) "3"
    127.0.0.1:6379> lindex table 0
    "-1"
    127.0.0.1:6379> lindex table 1
    "888"
    
    
    
    
    
    #lpop ,列表的左边开始消费数据,消费完毕则在列表中删除
    127.0.0.1:6379> LRANGE table 0 -1
    1) "888"
    2) "000"
    3) "1"
    4) "2"
    5) "3"
    127.0.0.1:6379> lpop table 1
    1) "888"
    127.0.0.1:6379> LRANGE table 0 -1
    1) "000"
    2) "1"
    3) "2"
    4) "3"
    
    
    
    
    
    
    #lpop ,列表的右边开始消费数据,消费完毕则在列表中删除
    127.0.0.1:6379> LRANGE table 0 -1
    1) "000"
    2) "1"
    3) "2"
    4) "3"
    127.0.0.1:6379> rpop table 1
    1) "3"
    127.0.0.1:6379> LRANGE table 0 -1
    1) "000"
    2) "1"
    3) "2"
    
    
    
    
    
    # rpoplpush 消费a列表的最右边元素,追加到b列表的最左边
    127.0.0.1:6379> lpush a 1 2 3
    (integer) 3
    127.0.0.1:6379> lpush b 4 5 6
    (integer) 3
    
    127.0.0.1:6379> rpoplpush a b
    "1"
    127.0.0.1:6379> lrange a 0 -1
    1) "3"
    2) "2"
    127.0.0.1:6379> lrange b 0 -1
    1) "1"
    2) "6"
    3) "5"
    4) "4"
    
    
    
    
    # 从列表最左侧开始消费数据(有数据的情况下消费一个;没有数据的情况下,会卡10s)
    127.0.0.1:6379> LRANGE b 0 -1
    1) "5"
    2) "4"
    3) "2"
    127.0.0.1:6379> blpop b 10
    1) "b"
    2) "5"
    127.0.0.1:6379> blpop b 10
    1) "b"
    2) "4"
    127.0.0.1:6379> blpop b 10
    1) "b"
    2) "2"
    127.0.0.1:6379> blpop b 10
    
    
    ...在另一个终端开启并执行
    127.0.0.1:6379> LPUSH b 3
    (integer) 1
    
    127.0.0.1:6379> blpop b 10
    1) "b"
    2) "3"
    (2.81s)
    
    
    

    redis数据类型_ 无序集合

    # 增加新的成员
    #set key  value          --> get key                --> del key  删除字符串类型的key
    #hset key field value    -->  hmget key field       --> hdel key field 删除hash类型中的属性
    #lpush key value         --> lrange key 0 -1        --> lrem 删除列表中某个区间的数据
    sadd key value
    
    127.0.0.1:6379> sadd skey svalue1 svalue2 svalue3
    (integer) 3
    
    # 查看内容
    127.0.0.1:6379> SMEMBERS skey
    1) "svalue3"
    2) "svalue2"
    3) "svalue1"
    
    
    
    #srem删除数据
    127.0.0.1:6379> SMEMBERS skey
    1) "svalue3"
    2) "svalue2"
    3) "svalue1"
    
    127.0.0.1:6379> srem skey svalue1
    (integer) 1
    
    127.0.0.1:6379> SMEMBERS skey
    1) "svalue3"
    2) "svalue2"
    
    
    
    
    
    # 修改数据
    # set key value
    # hset key field value
    # linsert 下标 修改的内容
    smove移动数据
    127.0.0.1:6379> sadd a1 1 2 3
    (integer) 3
    127.0.0.1:6379> sadd a2 11 22 33
    (integer) 3
    127.0.0.1:6379> SMEMBERS a1
    1) "1"
    2) "2"
    3) "3"
    127.0.0.1:6379> SMEMBERS a2
    1) "11"
    2) "22"
    3) "33"
    
    
    127.0.0.1:6379> smove a1 a2 3
    (integer) 1
    127.0.0.1:6379> SMEMBERS a1
    1) "1"
    2) "2"
    127.0.0.1:6379> SMEMBERS a2
    1) "3"
    2) "11"
    3) "22"
    4) "33"
    
    PS:集合中不存在重复数据(如果a1 和a2 都有3,则a1没有3,a2也没有3)
    
    
    
    
    
    # scard ,返回集合中成员的个数
    127.0.0.1:6379> SMEMBERS a1
    1) "1"
    2) "2"
    127.0.0.1:6379> scard a1
    (integer) 2
    
    
    
    
    
    #从集合中随机返回指定个数的成员
    127.0.0.1:6379> SMEMBERS a2
    1) "3"
    2) "11"
    3) "22"
    4) "33"
    
    127.0.0.1:6379> SRANDMEMBER a2 1
    1) "33"
    
    127.0.0.1:6379> SRANDMEMBER a2 2
    1) "11"
    2) "33"
    
    
    
    
    
    
    # 判断集合中是否有该成员
    127.0.0.1:6379> SMEMBERS a2
    1) "3"
    2) "11"
    3) "22"
    4) "33"
    
    127.0.0.1:6379> SISMEMBER a2 4
    (integer) 0
    127.0.0.1:6379> SISMEMBER a2 33
    (integer) 1
    
    
    
    
    
    
    #随机返回一个成员(并删除) 
    127.0.0.1:6379> SMEMBERS x
    1) "1"
    2) "2"
    3) "3"
    4) "6"
    
    127.0.0.1:6379> spop x
    "6"
    
    127.0.0.1:6379> SMEMBERS x
    1) "1"
    2) "2"
    3) "3"
    

    交集 并集 差集

    交集:多个集合加起来的重复部分
    
    127.0.0.1:6379> SMEMBERS a1
    1) "1"
    2) "2"
    3) "3"
    127.0.0.1:6379> SMEMBERS a2
    1) "3"
    2) "11"
    3) "22"
    4) "33"
    127.0.0.1:6379> SINTER a1 a2
    1) "3"
    
    # 交集的部分保存为一个新的集合
    127.0.0.1:6379> SINTERSTORE ab a1 a2
    (integer) 1
    127.0.0.1:6379> SMEMBERS ab
    1) "3"
    
    
    
    
    
    
    并集:多个集合加起来的所有内容
    127.0.0.1:6379> SMEMBERS a1
    1) "1"
    2) "2"
    3) "3"
    127.0.0.1:6379> SMEMBERS a2
    1) "3"
    2) "11"
    3) "22"
    4) "33"
    127.0.0.1:6379> SUNION a1 a2
    1) "1"
    2) "2"
    3) "3"
    4) "11"
    5) "22"
    6) "33"
    
    #将多个集合合并成一个新的集合
    127.0.0.1:6379> SUNIONSTORE new_ab a1 a2
    (integer) 6
    127.0.0.1:6379> SMEMBERS new_ab
    1) "1"
    2) "2"
    3) "3"
    4) "11"
    5) "22"
    6) "33"
    
    
    
    
    
    
    
    
    
    
    
    差集:两个集合不重复的数据
    # 显示排列在第一个集合不同的地方
    127.0.0.1:6379> SMEMBERS b1
    1) "1"
    2) "2"
    3) "3"
    127.0.0.1:6379> SMEMBERS b2
    1) "3"
    2) "44"
    3) "55"
    
    127.0.0.1:6379> SDIFF b1 b2  # b1不同的地方,b1在前面
    1) "1"
    2) "2"
    
    127.0.0.1:6379> SDIFF b2 b1  # b2不同的地方,b2在前面
    1) "44"
    2) "55"
    
    127.0.0.1:6379> SDIFFSTORE b3 b1 b2  #把b1不同的地方保存在一个新的集合b3中
    (integer) 2
    127.0.0.1:6379> SMEMBERS b3
    1) "1"
    2) "2"
    
    127.0.0.1:6379> SDIFFSTORE b4 b2 b1  #把b2不同的地方保存在一个新的集合中b4中
    (integer) 2
    127.0.0.1:6379> SMEMBERS b4
    1) "44"
    2) "55"
    
    
    
    
    
    
    # 获取成员数
    127.0.0.1:6379> scard b1
    (integer) 2
    

    redis数据类型_有序集合

    集合当中不存在重复数据
    与无序集合之间最大的区别:有序集合拥有一个分数的属性
    
    
    
    #增加数据
    # set key value
    # hset key value
    # lpush key value
    sadd key value
    
    127.0.0.1:6379> zadd school 1 zx
    (integer) 1
    127.0.0.1:6379> zadd school 2 zy
    (integer) 1
    127.0.0.1:6379> zadd school 3 pp
    (integer) 1
    127.0.0.1:6379> zadd school 4 dd
    (integer) 1
    
    
    #获取数据
    # get key
    # hget key
    # lrange key
    zrange key
    
    #查看所有数据
    127.0.0.1:6379> zrange school 0 -1
    1) "zx"
    2) "zy"
    3) "pp"
    4) "dd"
    
    127.0.0.1:6379> zrange school 1 3
    1) "zy"
    2) "pp"
    3) "dd"
    
    
    
    
    
    # 获取成员数
    127.0.0.1:6379> zcard school
    (integer) 4
    
    
    
    
    # 获取指定区间的成员数
    127.0.0.1:6379> zcount school 0 2
    (integer) 2
    
    
    
    
    
    #模糊匹配(a开头g结尾区间内的)
    127.0.0.1:6379> zrange school 0 50
    1) "aing"
    2) "pp"
    3) "dd"
    4) "pinp"
    
    127.0.0.1:6379> ZLEXCOUNT school [a [g
    (integer) 1
    
    
    
    
    
    
    #获取成员的分数值
    127.0.0.1:6379> zrange school 0 -1
    1) "zx"
    2) "zy"
    3) "pp"
    4) "dd"
    127.0.0.1:6379> ZSCORE school p
    (nil)
    127.0.0.1:6379> ZSCORE school pp
    "3"
    
    
    
    
    
    
    
    
    # 模糊匹配(从0开始匹配,z开头的,支持正则)
    127.0.0.1:6379> zscan school 0 match "z*"
    1) "0"
    2) 1) "zx"
       2) "1"
       3) "zy"
       4) "2"
    
    
    
    
    
    
    
    #删除数据zrem
    127.0.0.1:6379> zrange school 0 50   # 相当于zrange,数字可以更改
    1) "zy"
    2) "pp"
    3) "dd"
    
    127.0.0.1:6379> zrem school zy
    (integer) 1
    
    127.0.0.1:6379> zrange school 0 50
    1) "pp"
    2) "dd"
    
    
    

    常用redis系统命令

    1,查询所有的key
    127.0.0.1:6379> keys *
     1) "skey"
     2) "school"
     3) "class"
     4) "num"
     5) "a"
     6) "ab"
     7) "b1"
     8) "excel"
     9) "table"
    10) "key1"
    11) "b3"
    12) "new_ab"
    
    
    
    
    
    2,查询数据类型
    127.0.0.1:6379> type b3
    set
    
    127.0.0.1:6379> set abc bcd
    OK
    127.0.0.1:6379> type abc
    string
    
    
    
    
    
    3,查询过期时间
    127.0.0.1:6379> ttl a11    #秒
    (integer) -1
    
    127.0.0.1:6379> pttl a11    #毫秒
    (integer) -1
    
    
    
    
    
    
    4,查询key是否存在
    127.0.0.1:6379> exists b7
    (integer) 0
    127.0.0.1:6379> exists b4
    (integer) 1
    
    
    
    
    
    5,重命名key
    127.0.0.1:6379> rename a1 a11
    OK
    127.0.0.1:6379> exists a1
    (integer) 0
    127.0.0.1:6379> exists a11
    (integer) 1
    
    
    
    
    6,随机返回一个key
    127.0.0.1:6379> RANDOMKEY
    "key1"
    127.0.0.1:6379> RANDOMKEY
    "table"
    127.0.0.1:6379> RANDOMKEY
    "a1"
    
    
    
    
    6,删除key
    127.0.0.1:6379> del b2
    (integer) 1
    
    

    相关文章

      网友评论

          本文标题:redis安装 & 数据类型

          本文链接:https://www.haomeiwen.com/subject/ntjncltx.html