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. IDEA 配置文件位置

    1 IDEA 2020.1 以上 1.1 Win 语法: %APPDATA%\JetBrains\<product><version> Win上的APPDATA默认位置如下: ...

  2. linux中[gcc -shared -fPIC]的含义

    linux在gcc编译时加上 -shared 参数时,目的是使源码编译成动态库 .so 文件: 而-fPIC的作用是 告知编译器 生成位置无关代码(编译产生的代码没有绝对位置,只有相对位置):从而可以 ...

  3. 浅析 Find My 原理

    什么是 Find My 网络? 2021年4月21日的苹果发布会发布了一款新的产品:AirTag.使用的是 BLE + UWB 的技术.BLE 和 Find My 网络为 AirTag 提供了 GPS ...

  4. Jenkins 项目类型及配置项

    0. 简介 1. Freestyle project 1)General 2)源码管理 3)构建触发器 4)构建环境 5)构建 6)构建后操作 2. Maven 项目 1)所有配置项 2)Build ...

  5. 序列化 pickle模块

    1. pickle 简介 2. pickle 核心函数 3. pickle 高级 -- 复杂对象 1. 持久化与 pickle 简介 1.1 什么是持久化? 持久化的基本思想很简单.假定有一个 Pyt ...

  6. 官宣 MAUI 在.NET Preview 3的最新进展

    我们在.NET 6 Preview 3中交付了.NET多平台应用UI的移动和桌面开发的最新进展.此版本添加了Windows平台和WinUI 3,改进了基本应用程序和启动构建器,添加了原生生命周期事件, ...

  7. 深度解析Django REST Framework 批量操作

    我们都知道Django rest framework这个库,默认只支持批量查看,不支持批量更新(局部或整体)和批量删除. 下面我们来讨论这个问题,看看如何实现批量更新和删除操作. DRF基本情况 我们 ...

  8. hdu4267线段树段更新,点查找,55棵线段树.

    题意:      给你N个数,q组操作,操作有两种,查询和改变,查询就是查询当前的这个数上有多少,更改是给你a b k c,每次从a到b,每隔k的数更改一次,之间的数不更改,就相当于跳着更新. 思路: ...

  9. android添加账户流程分析涉及漏洞修复

    android修复了添加账户代码中的2处bug,retme取了很酷炫的名字launchAnyWhere.broadAnywhere(参考资料1.2).本文顺着前辈的思路学习bug的原理和利用思路. 我 ...

  10. Linux中grep工具的使用

    Grep grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来,是一种强大的文本搜索工具,是 ...