redis 指令

linux下操作

查看redis是否启动会
    ps -ef | grep redis
启动
    redis-server redis.conf 
关闭
    redis-cli shutdown
进入客户端
    redis-cli

redis语法

redis操作
    设置密码
        config set requirepass xxx
    验证密码
        auth xxx
    查询密码
        config get requirepass
数据库操作
    选择数据库
        select index(0~16)
    查看当前数据库所有key
        keys *
    清空当前数据库
        flushdb
    清空所有数据库
        flushall
数据操作
    判读key是否存在(存在返回1,不存在返回0)
        exists key
    给key设置过期时间(key 10s 从内存清除)
        expire key 10
    移除key-value
        move key value
    查看当前key的类型
        type key
    查看key的剩余时间(-1是永久)
        ttl key

String

    String类型
        设置key-value
            set key value   
        获取key的value
            get key    
        拼接key的value(value需要加 双引号,如果key不存在,相当于set key value)
            append key newString 
        获取value的长度
            strlen key
        value +1
            incr key
        value -1
            decr key
        value +n
            incrby key n
        value -n
            decrby key n
        截取字符串
            getrange key 0 3 
        替换字符串(将第2个字符串改成 xx)
            setrange key 1 xx
        设置有过期时间的key-value(30s过期)
            setex key 30 value
        设置key-value,如果存在,不操作(常用于分布式锁)
            setnx key value
        设置多个key-value
            mset k1 v1 k2 v2 k3 v3
        获取多个value
            mget k1 k2 k3 
        设置多个key-value,如果存在,不操作(具有原子性,一起成功or一起失败)
            msetnx k1 v1 k4 v4
        设置对象,值为json字符串(无法获取属性)
            set user:1 {name:zhangsan,age:14}
        设置对象,可以获取属性(等于是设置了两个key user:1:name 和 user:1:age)
            mset user:1:name lisi user:1:age 12
        先获取,再设置(如果不存在key 返回 nil)
            getset key value

list

定义
    list类型从左向右,是个链表结构
    value可以重复
场景
    消息队列


向列表左边插入数据
    lpush key value
向列表右边插入数据
    rpush key value
获取list指定区间的数据
    lrange key 0 1    (从左开始获取第一,第二个数据)
获取list所有的值
    lrange key 0 -1
移除list最左边的值(值从list 消失)
    lpop key
移除list最右边的值(值从list 消失)
    rpop key
通过下标获取值(值还在list)
    lindex key 1 (获取list第二个元素)
获取列表的长度
    llen key 
从左开始移除列表指定数量的value
    lrem key 2 a  (从左开始移除 2个a)
截取列表指定区间的value 构成新的列表 
    ltrim key 0 1 (将当前列表第一,第二个value 构成一个新的 list)
移除最右边一个值到另一个列表的最左边
    rpoplpush key newKey
更新列表指定下标的值(不存在报错)
    lset key 0 a (跟新当前列表的第一个value 为 a)
从左开始向列表中的某个value 左边 插入指定的 value 
    linsert key before a x(在第一个a 前面插入一个 x ,如果有多个a 只执行一次)
从左开始向列表中的某个value 右边 插入指定的 value 
    linsert key after a x(在第一个a 前面插入一个 x ,如果有多个a 只执行一次)

set

定义
    无序不重复集合
场景
    B站共同关注 用set取交集
    数据类型
        交集
        差集
        并集

向set中添加元素 
    sadd set value
查看set 中所有元素 
    smembers key 
判断set是否存在某个value
    sismember key value
获取set中元素的个数
    scard key 
移除set中的元素
    srem key value
随机抽出指定个数的元素
    srandmember key number
随机删除set中的元素
    spop key
移除当前Set中元素到指定的set
    smove key newKey value
获取两个set的差集(只获取key1的差集)
    sdiff key1 key2
获取两个set的交集
    sinter key1 key2
获取两个set的并集
    sunion key1 key2

hash

定义
    是个map集合
场景
    用户信息保存
    适合存储对象
设置具体的key-value
    hset key field value
设置多个key-value
    hmset key field1 value1 fielld2 value2
获取hash的value
    hger key field
获取hash多个value
    hmget key field1 field2
获取hash全部key-value
    hgetall key
删除hash指定key-value
    hdel key field 
获取hash 名值对 数量
    hlen key
判断hash中是否存在key
    hexists key field
获取hash 所有 key
    hkeys key
获取hash 所有 value
    hvals key
value 自增 n
    hincrby key field n
设置具体的key-value,如果存在则不设置
    hsetnx key field value

zset

定义
    在set基础上增加量一个值(score)
场景
    存储成绩表
    需要排序的
    热点排行榜
    
设置一个zset 值
    zadd key number value
zset 进行排序
    zrangebyscore key -inf +inf
移除 zset 中指定 元素
    zrem key value
获取集合中个数
    zcard key
获取指定score区间成员数量
    zcount key 1 2

geospatial

定义
    本质是用zset存储的,官方给出的适合做地图的数据类型(提供api)
    可用用zst命令 操作
场景
    地理位置(下载城市数据,java一次性导入)
        
添加地理位置
    geoadd china:city 30.0 100.0 shanghai (经度30 纬度100 上海)
获取城市经纬度
    geopos china:city shanghai
返回两个地点之间的距离
    geodist china:city beijing chongqing km
以某一点为中心 找出半径 你以内的所有元素
    georadius china:city 30 100 1000 km (取经纬30/100为中心 半径1000km内的所有元素)
以某一点为中心 找出半径 你以内的所有元素(显示直线距离)
    georadius china:city 30 100 1000 km withdist
以某一点为中心 找出半径 你以内的所有元素(带经纬度)
    georadius china:city 30 100 1000 km withcoord
找出指定元素周围的元素
    georadiusbymember china:city beijing 1000km (找出背景周围1000km的城市)

hyperloglog

计数 
有1%错误概率

事务

开启事务
    multi
执行一系列命令
提交事务
    exec
取消事务
    discard
乐观锁
    watch key
取消乐观锁
    unwatch key

redis乐观锁实现

开启乐观锁的方法,监视要操作的对象

使用乐观锁
       watch key
       multi
       操作 key
       exec  
在exec之前如果key 被别的线程修改了 ,就会导致事务提交失败

1

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值