Redis 7.0笔记

linux 命令

rm -rf 删除
cd 进入
mkdir 创建
su root 给权限
编辑文件
快速查找 空格+/
a 进入编辑模式
esc 退出编辑模式
:wq保存并退出
:set nu 显示行号
lsof -i:端口号 检查是否占用
解决无法后台启动redis 进入配置文件的路径,然后指定redis启动的配置文件、
服务启动 redis-server 配置文件路径及名称
服务端关闭redis 直接输入shutdown
远程关闭 redis-cli -a 密码 shutdown
多实例关闭 redis-cli -p 6379(端口号) shutdown

redis 常用命令

  1. keys * 查看当前库中所有的key

  2. exists key 判断某个key是否存在

  3. type key 查看key是什么类型

  4. del key 删除指定key数据
    Redis 7.0笔记_第1张图片

redis 10大数据类型

数据类型是值

1. redis 字符串

1. set key value 最常用

Redis 7.0笔记_第2张图片

  1. set key value nx (nx表示当key不存在时执行)

  2. set key value xx (xx表示当key存在时执行)

  3. set key value get(get表示先把之前的值拿出来,然后再把新的值写入)

  4. set key value ex 秒数 (ex 表示值的过期时间,单位为秒)

    可使用 ttl key 来进行查询过期时间还剩余多少时间
    -1 永不过期 -2 已过期

  5. set key value px 秒数 (px 表示值的过期时间,单位为毫秒)

  6. set key value exat unix秒数 (参数是unix秒数)

    public static void main(String[] args) {
        //获取unix时间戳
        System.out.println(Long.toString(System.currentTimeMillis()/1000L));
        }
    
  7. 修改value继承上次设置的过期时间

    set key value keepttl 即可保留上次设置的过期的时间

2. 同时设置/获取多个键值

​ 设置:mset key1 value1 key2 value2 key3 value3
​ 获取:mget key1 key2 key3
​ 批量设置如果键值不存在才进行写入:msetnx key1 value1 key2 value2 成功返回1 否则返回0

3. 获取指定范围区间内的值

getrange/setrange

getrange key 下标 (例如0 -1即取出所有)

setrange key 偏移量 替换值

Redis 7.0笔记_第3张图片

4. 数值递减

一定是数字才能进行加减

递增数字:INCR key
增加指定的整数:INCRBY key 指定整数

递减数值:DECR key
减少指定的整数:DECRBY key 指定整数

5. 获取字符串长度和内容追加

获取字符串长度:strlen key
内容追加:append key 追加内容

6. 分布式锁

setnx key value 只有key不存在时设置key的值
setex 键秒值 (setex设置为过期)

7. getset 先get然后立即set

getset key value 返回的是老值

2. redis 列表 List

单key多valu e

1. 插入值

lpush key value1 value2 value3…
rpush key value1 value2 value3…

遍历:lrange key 下标(0 -1是全部)
Redis 7.0笔记_第4张图片

2. 弹出值

lpop key 从左弹出value
rpop key 从右弹出value

3. 按照索引下标获取元素(从上到下)

lindex key 下标

4. 获取列表中元素的个数

llen key

5. 删除N个值等于v1的元素

lrem key 数字N(要删除的个数) 给定值v1(要删除的值)

6.截取指定范围的值后再赋值给key

ltrim key 开始index 结束index

7.从A链表弹出一个值到B链表

rpoplpush 源链表 目的链表

8.设置指定下标的值

lset key index value

Redis 7.0笔记_第5张图片

9.在已有值的前或后插入新的值

linsert key before/after 已有值value1 新增值value2

应用场景:微信订阅号

3.redis 哈希 Hash

hset:语法 hset key

hget:语法hget key key

hmset/hmget 批处理

Redis 7.0笔记_第6张图片

遍历 hgetall key

删除指定值 hdel key key

获取某个key内的全部数量

hlen key

是否存在在key里面的某个值的key

hexists key

罗列出所有key/value

hkeys/hvals

指定key进行数值加操作

加整数 hincrby key key 数值

加小数 hincrbyfloat key key 数值

不存在进行添加,存在不生效

hsetnx key key value

应用场景:jd早期购物车

4.redis 集合Set

新增值 sadd key value(主动去重,set值不可重复,无序)

查看值 smembers key

判断值是否存在,存在返回1否则0 sismember key value

删除值 srem key value

统计总数 scard key

随机抽出N个值展示 不删除弹出的值srandmember key N

随机抽出N个值 删除弹出的值spop key N

将key1里已存在的某个值赋给key2 smove key1 key2 key1Value

集合运算

差集运算 A-B

属于A但不属于B的元素构成的集合 sdiff key key

并集运算A∪B

属于A或者属于B的元素合并后的集合 sunion key key

交集运算A∩B

属于A同时也属于B的共同拥有的元素所构成的集合 sinter key key

redis7新命令 sintercard numkeys key key [limit] 此命令不返回结果集,只返回结果集的基数(结果集的个数),返回由所有给定集合的交集产生的集合的基数(结果集的个数)

应用场景:

  1. 微信抽奖小程序
  2. 微信朋友圈点赞查看同赞朋友
  3. QQ内推可能认识的人

你可能感兴趣的:(Linux,Java,redis,笔记,缓存)