Redis基本使用-字符串数据类型操作
介绍
Redis中最简单的数据类型,可以存储文字、数字、浮点数,还可以进行二进制存储。本文就此进行简要记录,如果不对,还请斧正。
基本操作
设置值
SET KEY VLAUE
在一个数据库中的值只会有一个,再次设置会覆盖原来的值。
可以使用help命令帮助我们使用
设置键限制
SET key value XX #键不存在不能设置
SET key value NX #键不存在才能设置
键的过期
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
EX 代表超时秒数
PX 代表超时毫秒
我们可以使用Redis来缓存一些经常会被用到或者需要耗费大量资源的内容,通过这些放到redis中(或者说放到内存中),程序可以以极快的速度取到这些内容。
设置多个值MSET key value[key1 value1...]
、获取多个值MGET key1 key2
键的命名
通常使用::来区分层级
如MSET zhangshan::email zhangshan@qq.com zhangshan::age 16 zhangshan::location shanghai
其实/或者.或者-都可以
MSETNX的原子性
MSET具有原子性,要么都设置成功,要么都不成功
可以使用keys * 来查询所有的key
GETSET key new-value
获取旧的值设置新的值
APPEND key value
将value追加到key后面
STRLEN key
返回字符串长度
字符串索引
从左到右,从0开始;从右到左,从-1开始
替换
SETRANGE key index value
GETRANG key startIndex endIndex
获取所有长度获取0到-1即可
对数字的操作
对于键是字符串,值是数字的,我们可以使用INCRBY和DECRBY来进行增加或者减少
默认值是0
浮点数
操作使用INCRBYFLOAT key floatValue,但是没对应的DECRBY,使用负数
也可以使用APPEND、STRLEN、STRANGE和GETRANGE,redis会将数字先转换为字符串然后执行操作。
键Key
Redis key值是二进制安全的,就是说可以用任何二进制的值做为key值。如简单的字符串,jpeg文件。空字符串也是有效的key值。
Key的取值原则
1.不需要太长,消耗内存,且查找此类键值对消耗计算资源较高
2.不宜太短,可读性差
String
字符串是最基本的Redis值类型。Redis字符串是二进制安全的,这就意味着一个redis字符串能包含任意类型的数据,如一个JPEG格式的图片或者一个序列化的Ruby对象
一个字符串类型的值最多能存储512M字节的数据。
清空整个数据库
FLUSHDB
过期命令
Redis给key设置一个生存时间(秒或毫秒),当到达这个时间之后就会自动删除
设置多少秒或者多少毫秒过期
EXPIRE key seconds
PEXPIRE key milliseconds
设置在指定的Unix时间戳过期
EXPIREAT key timestamp
PEXPIREAT key milliseconds-timestamp
删除过期
PERSIST key
生存时间
TTL(Time To Live),key的存活时间
查看剩余的存活时间
TTL key
PTTL key
key存在但是没有设置TTL,返回-1
key曾经存在,但已经消亡,返回-2
查找键
KEYS pattern
pattern取值
*任意长度的字符
?任意一个字符
[]字符集合,标识可以是集合中的任意一个
键类型
TYPE key
键是否存在
EXISTS key
键重命名
RENAME key newkey
REBANENX key newkey
键删除
DEL key[key...]
获取值
GET key
获取多个给定键的值
MGET key[key...]
返回旧值并设置新值
GETSET key value
如果键不存在就创建并赋值
字符串长度
STRLEN key
追加字符串
APPEND key value
如果键存在就追加;如果不存在就等同于SET key value
获取子字符串
GETRANGE key start end
索引值从0开始,负数标识字符串从右向左数。-1是最后一个字符
覆盖字符串
SETRANGE key offset value
步长1的增减
INCR key
DECR key
字符串值会被解释成64位有符号的十进制数来操作,结果依然转成字符串
步长增减
INCRBY key decrement
DECR key decrement
字符串值会被解释成64位有符号的十进制数来操作,结果依然转成字符串
位图bitmap
位图不是真正的数据类型,他是定义在字符串中的
一个字符串类型的值最多能存储512MB字节内容
位上限:2(9+10+10+3)=232b
设置某一位上的值
SETBIT key offset value
offset偏移量,从0开始
获取某一位上的值
GETBIT key offset
返回指定值0或者1在指定区间上的第一次出现的位置
BITPOS key bit [start] [end]
ab是存储为
使用SETBIT将’a’修改成‘b’
对于中文
位操作
对一个或多个保存二进制的字符串key进行位元操作,并将结果保存在destkey上
operation可以是AND、OR、NOT、XOR
这四种操作中的任意一种
BITOP AND destkey key [key....]
对一个或多个key求逻辑与,并将结果保存在destkey中
除了NOT操作外其他操作都可以接受一个或多个key作为输入
当BITOP处理不同长度的字符串时,较短的那个字符串缺少的部分会被看做0
空的key也被看做是包含0的字符串序列
统计指定位区间上为1的个数
BITCOUNT key [start] [end]
从左到右,从0开始,从右到左-1开始
BIYCOUNT testkey 0 0
表示从索引为0的字节,就是第一个字节的统计
BITCOUNT teskey 0 -1
等同于BITCOUNT testkey
登录不同的库
redis-cli -n 0
清除当前库数据
FLUSHDB
清除所有库中数据
FLUSHALL
模拟场景
网站用户的上线次数统计(活跃用户)
用户ID为key,天为offerset,上线设置为1
ID为500的用户,第一天上线、第三十天上线
按天统计网站活跃用户
天作为key,用户id作为offset,上线设置为1
求一段时间内活跃的用户
求四月份的活跃用户