美文网首页
Redis基础

Redis基础

作者: 背着耿鬼的蒜头 | 来源:发表于2021-05-22 20:03 被阅读0次

    Redis命令

    基本命令

    #测试连接,返回pong连接成功
    ping
    #切换数据库 select [index]
    select 1
    #查看数据库大小
    dbsize
    #查看所有的key
    keys *
    #清空所有
    flushall
    #清空当前数据库
    flushdb
    #判断是否存在key exists [key]
    exists name
    #移动key到另一个数据库 move [key] [db]
    move name 1
    #设置key过期时间 expire [key] [second]
    expire name 10
    #查看key剩余时间 ttl [key]
    ttl name
    #移除key del [key]
    del name
    #查看key的类型 type [key]
    type name
    #设置基本值 set [key] [value]
    set name zhangsan
    #获取key
    get name
    #测试并发:100个并发连接 100000请求
    redis-benchmark -h localhost -p 6379 -c 100 -n 100000
    
    

    String 类型

    String 除了字符串类型还能是数字类型

    • 计数器
    • 统计多单位数量
    • 粉丝数
    • 对象缓存存储
    #设置多个值 mset [key] [value] [key1] [value2] ....
    mset name komorebi name1 komorebi
    #获取多个值 mget [key] [key1] 
    mget name name1
    #设置一个值,指定时间过期 setex [key] [second] [value]
    setex name 30 hello
    #设置一个值,如果该值已经存在,则不设置 setnx [key] [value]
    setnx name hello
    #设置多个值,同时判断值是否存在,存在则全部不创建(要么一起成功,要么一起失败)msetnx [key] [value] [key1] [value2] ....
    msetnx name komorebi name1 komorebi
    #向String类型的key中追加字符 append [key] [value]
    #如果追加的key在当前数据库不存在,则相当于set key
    append name "hello"
    #获取字符串长度 strlen [key]
    strlen name
    #自增1 incr [key]
    incr views
    #指定数字增加 incrby [key] [num]
    incrby views 10
    #自减1 decr [key]
    decr views
    #指定数字减少 decrby [key] [num]
    decrby views 10
    #字符串范围 getrange [key] [begin] [end]
    #后面为-1 为开区间
    getrange name 0 3
    getrange name 0 -1
    #替换指定位置开始的字符串 setrange [key] [index] [value]
    setrange name 1 xx
    #设置对象 set [key]:[id]{[key1]:[value1],[key2]:[value2]}
    #mset [key]:[id]:[key1] [value1] [key]:[id]:[key2] [value2]
    set user:1{name:zhangsan,age:3}
    mset user:1:name zhangsan user:1:age 3
    #得到上一个值,设置下一个值 不存在就直接set getset [key] [value]
    getset name komorebi
    

    List 类型(列表)

    #向list中添加值,插入的时候为列表的头部,最后一个插入的下标为0 lpush [key] [value]
    lpush list one
    lpush list two
    lpush list three
    #向list中的列表尾部添加值,下标为最后一位 rpush [key] [value]
    rpush list right
    #获取list中的所有值 lrange [key] [begin] [end]
    lrange list 0 -1
    #获取list中的指定值
    lrange list 0 1
    #移除list中的第一个元素 lpop [key]
    lpop list
    #移除list中的最后一个元素 rpop [key]
    rpop list
    #通过下标获取list中的某一个值 lindex [key] [index]
    lindex list 0
    #获取list中的长度 llen [key]
    llen list
    #移除list中的一个值 数字可以为>0 =0 <0 或者为其他数字
    lrem list 1 one
    
    

    Set 类型(集合)

    #set中的值不能重复
    #添加
    sadd myset "hello"
    #查看所有元素
    smembers myset
    #判断当前值是不是存在set中
    sismember myset hello
    #查看当前set值的个数
    scard myset
    #移除某一个元素
    srem myset hello
    #随机抽取元素(可以指定个数)
    srandmember myset 2
    #随机移除一个元素
    spop myset
    #将元素从一个set移动到另一个set
    smove myset1 myset2 hello
    #求两个set的差集
    sdiff myset1 myset2
    #求两个set的交集
    sinter myset1 myset2
    #求两个set的并集
    sunion myset1 myset2
    

    Hash 类型(map)

    本质上和String类型没有什么区别

    #创建一个hash
    hset myhash field1 hello
    #查询hash中的值
    hget myhash field1
    #设置多个值 会覆盖
    hmset myhash field1 hello field2 world
    #获取多个值
    hmget myhash field1 field2
    #获取hash里所有的键值对
    hgetall myhash
    #删除某个字段
    hdel myhash field1
    #获取hash的长度
    hlen myhash
    #判断hash中的某个field是否存在
    hexists myhash field1
    #只获得所有的field
    hkeys myhash
    #只获得所有的值
    hvals myhash
    #给hash中的指定field值自增 如果设置-1相当于自减
    hincrby myhash field1 1
    #判断是否存在,不存在就创建
    hsetnx myhash field2 hello
    

    Zset 类型(有序集合)

    在set的基础上增加了值

    #添加(需要添加一个数来进行排序)
    zadd myset 1 one
    zadd myset 2 two
    #获取所有的值
    zrange myset 0 -1
    #从高到低获取所有的值
    zrevrange myset 0 -1
    #设定查询的范围(-inf +inf表示负无穷到正无穷,withscores表示加上参数)
    zrangebyscore myset -inf +inf
    zrangebyscore myset 1 2 withscores
    #查看存在多少个元素
    zcard myset
    #移除对应的元素
    zrem myset hello
    #判断区间内共有多少元素
    zcount myset 1 3
    

    geospatial(地理位置)

    geo的底层实现原理其实就是Zset

    可以使用zset命令操作geo

    #一般直接通过java程序一次性导入
    #参数 key 经度 纬度 名称
    #geoadd 添加指定的经纬度 可以同时添加多个
    geoadd china:city 121.47 31.23 shanghai
    #geopos获取经纬度
    geopos china:city shanghai
    #geodist获取两地之间的距离 单位m:米,km:千米,mi:英里,ft:英尺
    geodist china:city shanghai beijing km
    #georadius以给定的经纬度为中心,找key范围内的元素
    #后面跟withdist为直线距离 withcoord为显示经纬度 count设置获取多少个
    georadius china:city 116 30 1000 km withdist withcoord count 3
    #以已有元素位置为中心,找范围内的元素 其他参数与georadius一样
    georadiusbymember china:city beijing 1000 km
    #将二维的经纬度转换为一维的字符串,如果字符串越接近,那么距离越近
    geohash china:city beijing
    

    hyperloglog(基数统计算法)

    什么是基数

    A{1,3,5,7,8,7,8}

    B{1,3,5,7,8,8}

    基数(不重复的元素的个数)=5,可以接受误差

    #添加元素
    pfadd mykey a b c d e f g
    #统计元素的个数
    pfcount mykey
    #合并两个集合为mykey3(去掉重复元素)
    pfmerge mykey3 mykey mykey2
    

    bitmaps

    位存储

    一般用于存储0和1两种状态

    #设置位存储 第一位表示下标 第二位存1或者0
    setbit sign 0 0
    #查询某一位的状态
    getbit sign 0
    #统计为1的状态
    bitcount sign
    

    相关文章

      网友评论

          本文标题:Redis基础

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