redis 基本操作命令
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 基本操作命令的更多相关文章
- Redis日常操作命令小结
Redis缓存服务是运维工作中比较常见的一种维护工作,下面就redis日常操作命令在此做一简单小结,以备查用: 1)连接redis服务命令# redis-cli -h redis主机ip或主机域名 - ...
- Redis 常用操作命令,非常详细!
下面总结并演示了 Redis 的 常用管理命令.key 操作.字符串.集合.列表.散列类型的操作命令. 你需要掌握的 Redis 知识 史上最全 Redis 高可用解决方案总结 为什么分布式一定要有R ...
- redis基本操作命令
前面我们看了redis的简介安装和数据类型,接下来介绍一下redis基本数据类型的操作命令: 一:redis键值对的管理和操作 DEL key 该命令用于在 key 存在时删除 key. DUMP k ...
- redis 常用操作命令
操作相关的命令连接 quit:关闭连接(connection)auth:简单密码认证 持久化 save:将数据同步保存到磁盘bgsave:将数据异步保存到磁盘lastsave:返回上次成功将数据保存到 ...
- redis 远程操作命令
在远程服务上执行命令 如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令. 语法 $ redis-cli -h host -p port -a password ...
- redis php操作命令
redis的五种存储类型的具体用法 String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者 ...
- Linux安装Redis和Redis基本操作命令
01Redis简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI ...
- redis 一些操作命令
# 删除laravel keyredis-cli -h 10.9.103.15 -a password keys "laravel*" | xargs redis-cli -h 1 ...
- Redis内存数据库操作命令详解
一.连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 二.对value操作的命令 exists(key):确认一个key是否存在 ...
- 监控redis的操作命令
查看redis客户端的操作记录,即~/.rediscli_history. ls /home/*/.rediscli* 但是看不到代码操作redis的记录,只是redis-cli的记录.可以用moni ...
随机推荐
- Bug Hunt UVA - 1596
In this problem, we consider a simple programming language that has only declarations of onedimens ...
- Day04_17_常用Arrays类
常用Arrays类 Arrays.toString()方法 该方法是用来将数组中得内容转换成String类型,进行输出.入参可以是(byte,int,long,float,double,boolean ...
- Vue.js小案例、生命周期函数及axios的使用
一.调色框小案例: 随着三个滑动框的变化,颜色框的颜色随之改变 1.1.实例代码 <!DOCTYPE html> <html lang="en" xmlns:v- ...
- Mybatis的简单增删改查
刚开始学习Mybatis可以先看下官方文档,MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集.MyBat ...
- php 二维数组排序详解: array_multisort
定义和用法 array_multisort() 函数返回一个排序数组.您可以输入一个或多个数组.函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序. 注释: ...
- hdu2363 枚举最短路
(1) 二分 把所有的高度都拿过来,组合起来,sort一遍,然后二分,找到能连通的最小的那个,但这里存在一起情况,就是遇到高度差相等的时候会bug.... (2) 枚举 连通直接break ...
- 【Mybtais】Mybatis 插件 Plugin开发(一)动态代理步步解析
需求: 对原有系统中的方法进行'拦截',在方法执行的前后添加新的处理逻辑. 分析: 不是办法的办法就是,对原有的每个方法进行修改,添加上新的逻辑:如果需要拦截的方法比较少,选择此方法到是会节省成本.但 ...
- python-内置函数-compile,eval,exec
#将字符串,编译成python代码 compile()#执行,有返回值,执行表达式并获取结果 eval()#执行python代码,无返回值,接收:代码或者字符串 exec() s = "pr ...
- windows 7系统封装总结
win7系统封装总结 需求:对于个人家庭用户,网上下载原版镜像或者下载好别人封装好的系统都无所谓,但是在公司办公的特殊环境下, 有时需要经常装一些特殊的软件,根据实际情况,封装一个适合本公司使用环境的 ...
- Vulnerability: Cross Site Request Forgery (CSRF)
CSRF跨站请求伪造 这是一种网络攻击方式,也被称为one-click attack或者session riding 攻击原理 CSRF攻击利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web ...