redis 基本操作

String

操作字符串

  • 1 SET key value 设置指定 key 的值 ​
  • 2 GET key 获取指定 key 的值。 ​
  • 3 GETRANGE key start end 返回 key 中字符串值的子字符 ​
  • 4 GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 ​
  • 5 GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的 位(bit) [0/1]。 ​
  • 6 MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。
  • ​7 SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 ​
  • 8 SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。 ​
  • 9 SETNX key value 只有在 key 不存在时设置 key 的值。 ​
  • 10 SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。 ​
  • 11 STRLEN key 返回 key 所储存的字符串值的长度。 ​
  • 12 MSET key value [key value ...] 同时设置一个或多个 key-value 对。 ​
  • 13 MSETNX key value [key value ...] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 ​
  • 14 PSETEX key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。 ​
  • 15 INCR key 将 key 中储存的数字值增一。 ​
  • 16 INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。 ​
  • 17 INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。 ​
  • 18 DECR key 将 key 中储存的数字值减一。 ​
  • 19 DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。 ​
  • 20 APPEND key value 追加key 值

操作字节bit

直接操作二进制位

  • setbit k1 1 1

设置k1 二进制位 第2位是 1

0 1 代表俩个字节

  • bitpos k1 1 0 0

二进制位1在 k1 从 字节 0 到0 的位置

  • bitcount k1 0 1

k1 从字节0到1 的位置 1 出现的次数

  • bitop and/or keyNam k1 k2

k1 和k2 的或与运算放在keyname上

应用场景

1.记录一年中的登陆次数

    setbit sean  1   1      第一天登陆了
setbit sean 7   1 第七天登陆了
setbit sean 365 1 第365天登陆了
strlen sean 多少个字节
bitcount sean 0 -1

2.统计活跃用户 (用户id和二进制位做关联)

    setbit   20190101  1   1    1月1号编号位1的用户登陆了
• setbit   20190102 1   1 1月2号编号位1的用户登陆了
• setbit   20190102 7   1 1月2号编号位7的用户登陆了
•   bitop or destkey 20190101 20190102 按位与运算
•   bitcount destkey 0 -1   统计俩天之内的活跃用户

list

有序 可重复

  • lpush 从左边加入
  • rpush 从右边加入
  • lpop 从左边弹出
  • rpop 从右边弹出
  • lrange 从左边取值 【正负向索引】
  • LINDEX 取索引为
  • Lset k1 3 a 设置4位置的值为a
  • LREM k1 2 a 移除k1的2个a 【2为正数删除前俩个,负数删除后俩个】
  • linsert k1 after 6 a 在元素6后面插入a
  • blpop 阻塞弹出【单播队列】
  • lrange k2 2 -2 删除从2 到-2 俩端的元素

hash

  • set sean::name 'test'
  • set sean:age 12
  • get sean::age
  • get sean*

以上成本太高

  • hset sean name test
  • hmset sean get19 address bj
  • hget sean name
  • hmget sean name age
  • hkeys sean 键值
  • hvals sean Z所有值
  • hgetall sean 获取所有
  • hincrbyfloat sean age 05 {age 加0.5}
  • hincrbyfloat sean age -1

set

无需 不可重复

  • sadd k1 a b c d e a 增加
  • srem k1 a b c 删除
  • smembers k1 c 查看所有
  • sinter k2 k3 交集
  • sinterstore res k2 k3 交集存到res
  • sunion k2 k3 并集 【可以带store】
  • sdiff k2 k3 差级 前减后
  • srendmember count 随机

    count为正数,取出一个去重的结果集(不能超过已有集)

        负数,取出一个带重复的结果集,一定满足需求

  • spop 随机弹出1个

sorted_set

去重 有序 物理内存左小右大{不随命令变化}

  • zdd k1 8 a 6 b 5 c
  • zgange k1 0 -1 withsores
  • zrengebyscode k1 3 9
  • ZrevRenge k1 0 1 倒序取
  • zscode k1 apple 根据元素取分值
  • zrank k1 a

实现方式 :跳表

管道

通信成本变低

echo -e "set k1 99\nincr k2 \n get k2 " | nc localhost 6379

发布订阅

publish guandao hello 发布

subscribe guandao 接收(监听之后才能收到)

事务

multi 事务编写

exec 事务开始执行

watch 监听key是否发生变化

多个client 发来事务请求, 谁的exec先来 谁先执行

几个小知识点

redis key的有效期

  • redis 过期时间不会随着访问延长
  • redis 发生写,会剔除过期时间
  • 倒计时,且 redis 不能延长

redis key的过期判原理

  • 被动访问判定
  • 主动周期轮训判定 10s随机去20个key 进行过期检测,过期则删除, 如果多于25%,则继续随机轮训

redis 淘汰冷数据

redis 内存是有限的,随着访问的变化,应该淘汰掉冷数据

  • redis 内存设置 maxmemory 1-10G左右

  常用的俩个淘汰策略

  • 淘汰策略 LFU 碰了多少次
  • LRU 多久没碰

redis 基本操作命令的更多相关文章

  1. Redis日常操作命令小结

    Redis缓存服务是运维工作中比较常见的一种维护工作,下面就redis日常操作命令在此做一简单小结,以备查用: 1)连接redis服务命令# redis-cli -h redis主机ip或主机域名 - ...

  2. Redis 常用操作命令,非常详细!

    下面总结并演示了 Redis 的 常用管理命令.key 操作.字符串.集合.列表.散列类型的操作命令. 你需要掌握的 Redis 知识 史上最全 Redis 高可用解决方案总结 为什么分布式一定要有R ...

  3. redis基本操作命令

    前面我们看了redis的简介安装和数据类型,接下来介绍一下redis基本数据类型的操作命令: 一:redis键值对的管理和操作 DEL key 该命令用于在 key 存在时删除 key. DUMP k ...

  4. redis 常用操作命令

    操作相关的命令连接 quit:关闭连接(connection)auth:简单密码认证 持久化 save:将数据同步保存到磁盘bgsave:将数据异步保存到磁盘lastsave:返回上次成功将数据保存到 ...

  5. redis 远程操作命令

    在远程服务上执行命令 如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令. 语法 $ redis-cli -h host -p port -a password ...

  6. redis php操作命令

    redis的五种存储类型的具体用法 String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者 ...

  7. Linux安装Redis和Redis基本操作命令

    01Redis简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI ...

  8. redis 一些操作命令

    # 删除laravel keyredis-cli -h 10.9.103.15 -a password keys "laravel*" | xargs redis-cli -h 1 ...

  9. Redis内存数据库操作命令详解

    一.连接操作相关的命令 Ÿ   quit:关闭连接(connection) Ÿ   auth:简单密码认证 二.对value操作的命令 Ÿ   exists(key):确认一个key是否存在 Ÿ   ...

  10. 监控redis的操作命令

    查看redis客户端的操作记录,即~/.rediscli_history. ls /home/*/.rediscli* 但是看不到代码操作redis的记录,只是redis-cli的记录.可以用moni ...

随机推荐

  1. 如何自己设计一个类似dubbo的rpc框架?

    (1)上来你的服务就得去注册中心注册吧,你是不是得有个注册中心,保留各个服务的信息,可以用zookeeper来做,对吧 (2)然后你的消费者需要去注册中心拿对应的服务信息吧,对吧,而且每个服务可能会存 ...

  2. 2021年HW0day-奇安信 网康下一代防火墙 RCE漏洞细节

    漏洞信息: 漏洞名称:奇安信 网康下一代防火墙 RCE漏洞. 漏洞性质:远程命令执行 漏洞利用特点:命令执行之后没有回显 利用方式:防火墙使用linux进行开发的,可以使用echo xxx >1 ...

  3. linux安装cmake

    1 概述 linux下安装cmake,目前最新的版本为3.17.0-rc2,安装的方式一共有三种:通过软件包仓库安装,通过编译好的版本进行安装,从源码手动编译安装. 2 仓库安装 笔者的是deepin ...

  4. Day11_56_在SortedSet中使用泛型

    在SortedSet中使用泛型 import java.util.SortedSet; import java.util.TreeSet; //主类 public class GenericTest0 ...

  5. Day02_14_可变长参数

    Java 可变参数 一个方法中只能有一个可变参数 它必须是该方法的最后一个形参(必须放在参数列表最后一个的位置) 传递给可变参数的数据类型必须一致 实例 public class 可变长参数 { pu ...

  6. 编写shell脚本让springboot项目在CentOS中开机自启动

    springboot项目部署在CentOS系统上时,如果遇到停电关机,公司的实施人员就得跑到甲方现场重新启动项目并测试,很是麻烦,这里探讨如何编写shell脚本控制springboot项目开机时自动启 ...

  7. (7)MySQL进阶篇SQL优化(InnoDB锁-事务隔离级别 )

    1.概述 在我们在学习InnoDB锁知识点之前,我觉得有必要让大家了解它的背景知识,因为这样才能让我们更系统地学习好它.InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION ...

  8. 1045 Favorite Color Stripe

    Eva is trying to make her own color stripe out of a given one. She would like to keep only her favor ...

  9. 【github】 加速国内 Github 访问,下载,的9种方案!

    原文参考 https://mp.weixin.qq.com/s/ptFBjWXj88fsI3Oh6PghRA 1. GitHub 镜像访问 这里提供两个最常用的镜像地址: https://github ...

  10. composer 使用提示

    1.使用国内镜像[推荐] composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 或者 comp ...