redis特性
1.基于内存的key-value数据库
2.基于c语言编写的,可以支持多种语言的api //set每秒11万次,get 81000次
3.支持数据持久化
4.value可以是string,hash, list, set, sorted set
使用场景
1. 去最新n个数据的操作
2. 排行榜,取top n个数据 //最佳人气前10条
3. 精确的设置过期时间
4. 计数器
5. 实时系统, 反垃圾系统
6. pub, sub发布订阅构建实时消息系统
7. 构建消息队列
8. 缓存
redis常用命令
数据库操作
默认是使用下标为0的数据库,选择范围是0-15,该命令适用于区分开发环境
系统信息:info
测试链接情况:ping(正常返回pong)
选择第一个库:select index
清除当前数据库:flushdb
清除所有数据库: flushall
查看当前数据库数量:dbsize
key
keys * 获取所有的key
keys pattern 获取给定模式的key
randomkey 获取随机一个key
type key 获取key的类型
exists key 判断是否存在key(1存在,0不存在)
ttl key 获取key过期时间(-1永久,-2过期)
pttl key 获取key过期时间(以毫秒为单位返回)
expire key 10 设置过期时间(秒)
pexpire key 1000 设置过期时间(毫秒)
persist key 删除过期时间
del key 删除key
dump key 序列化给定 key ,并返回被序列化的值
move key db 将当前数据库的 key 移动到给定的数据库 db 当中
rename key newkey 修改 key 的名称
renamenx key newkey 仅当 newkey 不存在时,将 key 改名为 newkey
string(偏移量从0开始)
set key1 value1 设置key的值
get key1 获取key的值
mset key1 value1 key2 value2 批量设置
mget key1 key2 批量获取
setex key time(秒) value 添加string类型数据并设置过期时间
setnx key value 设置string数据(避免对已经存在的key进行覆盖)
append key str 将str追加到key后面(返回总长度)
setrange key offset value 修改值从offset后开始替换为value(返回总长度)
getset key value1 修改值为value1,返回value(如果不存在value返回nil)
strlen key 获取value的长度
getrange key start len 获取从start处len个字符(不影响value)
---------------------
incr key 将 key 中储存的数字值增一
incrby key increment 将 key 所储存的值加上给定的增量值(increment)
decr key 将 key 中储存的数字值减一
decrby key increment key 所储存的值减去给定的减量值(decrement)
incrbyfloat 增减浮点数
getbit key offset 对key所储存的字符串值,获取指定偏移量上的位(bit)
setbit key offset value 对key所储存的字符串值,设置或清除指定偏移量上的位(bit)
bitcount key[start end] 对key的字符串值,统计区间内bit位为1的个数
bitop and destkey 对一个或多个key求逻辑并,并将结果保存到destkey
bitop or destkey 对一个或多个key求逻辑或,并将结果保存到destkey
bitop xor destkey 对一个或多个key求逻辑异或,并将结果保存到destkey
bitop not destkey key 对给定key求逻辑非,并将结果保存到destkey
hash(增量在原始值基础增加)
hset key field value 设置field字段的值
hget key field 获取field字段的值
hmset key field1 value1 field2 value2 批量设置hash表
hmget key field1 field2 批量获取hash表某些字段的值
hsetnx key field value 设置field字段的值(避免已经存在覆盖)
hdel key field1 field2 删除一个获多个hash表字段
hexists key field 判断是否存在field字段(1存在,0不存在)
hgetall key 获取hash表所有数据
hlen key 获取hash表字段数量
hkeys key 只获取字段名
hvals key 只获取值
---------------------
hincrby key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment
hincrbyfloat key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment
list(index从0开始)
lpush key value1 value2 左侧插入节点
rpush key value1 value2 右侧插入节点
linsert key before value value1 在value之前插入value1
linsert key after value value1 在value之后插入value1
lset key index value 修改index节点的值为value
lpop key 左侧弹出一个节点
rpop key 右侧弹出一个节点
lrem key count value 删除count数量的value
ltrim mylist index1 index2 删除index1到index2的节点元素
llen key 获取list长度
lindex key index 获取index位置的节点元素
lrange key index1 index2 数据index1到index2的节点元素
---------------------
rpoplpush list list2 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
set(value不重复)
sadd key value1 value2 设置集合
srem key value 删除集合中的value
spop key count 从集合随机弹出count个元素(并显示)
smove source destination member 将 member 元素从 source 集合移动到 destination 集合
scard key 获取集合元素个数
smembers key 获取全部集合元素
srandmember key count 随机获取count个集合中的元素
sismember key value 判断value是否在集合中(1存在,0不存在)
------------------
sdiff key1 key2 返回给定所有集合的差集
sdiffstore destination key1 key2 返回给定所有集合的差集并存储在destination中
sinter key1 key2 返回给定所有集合的交集
sinterstore destination key1 key2 返回给定所有集合的交集并存储在destination中
sunion key1 key2 返回所有给定集合的并集
sunionstore destination key1 key2 所有给定集合的并集存储在destination集合中
zset(有序集合,通过关联score进行排序)
zadd key score1 member1 向有序集合添加一个或多个成员,或者更新已存在成员的分数
zrem key member 移除有序集合中的一个或多个成员
zremrangebylex key min max 移除有序集合中给定的字典区间的所有成员
zremrangebyrank key start stop 移除有序集合中给定的排名区间的所有成员
zremrangebyscore key min max 移除有序集合中给定的分数区间的所有成员
zcard key 获取有序集合的成员数
zscore key member 获取有序集合成员的分数值
zrank key member 获取有序集合中指定成员的索引
zrange key start stop 获取有序集合指定索引区间内的成员
zcount key min max 获取有序集合中指定区间分数的成员数量
zlexcount key min max 获取有序集合中指定字典区间内成员数量
zrangebylex key min max 获取字典区间有序集合的成员
zrangebyscore key min max 获取分数区间有序集合的成员
zrevrank key member 获取有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
zrevrange key start stop 获取有序集中指定区间内的成员,通过索引,分数从高到低
zrevrangebyscore key max min 获取有序集中指定分数区间内的成员,分数从高到低排序
--------------------
zincrby key increment member 有序集合中对指定成员的分数加上增量 increment
zinterstore destination numkeys key 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
zunionstore destination numkeys key 计算给定的一个或多个有序集的并集,并存储在新的 key 中
zscan key cursor 迭代有序集合中的元素(包括元素成员和元素分值)
sort(默认使用数据排序,value为字符串,需要在key后面增加alpha参数)
sort key 按照asc的方式来排序
sort key desc 降序
sort key by pattern 按照一个模式排序
sort key limit start num 获取从下标start开始的num个元素(下标从0开始)
sort key store destlist 把排序的结果存储到destlist中
store参数 表示把sort查询的结果集保存起来、
limit参数(限制返回结果) offset(指定要跳过的元素数量),count(返回对象数量)
redis支持的脚本命令
Eval的使用
eval script numkeys key , arg
<1> script: 你的lua脚本
<2> numkeys: key的个数
<3> key: redis中各种数据结构的替代符号
<4> arg: 你的自定义参数
其他命令
SCRIPT LOAD script
将给定的脚本缓存,不执行,并返回sha1校验值
EVALSHA sha1 numkeys key [key ...] arg [arg ...]
根据给定的 sha1 校验码,对缓存在服务器中的脚本进行求值
SCRIPT EXISTS sha1 [sha1 ...]
给定一个或多个脚本的 SHA1 校验和,返回一个包含 0 和 1 的列表,表示校验和所指定的脚本是否已经被保存在缓存当中
SCRIPT FLUSH
清除所有 Lua 脚本缓存
SCRIPT KILL
杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效(如果已经执行了写操作,则需要通过shutdown nosave命令来处理)
执行脚本的方式
redis-cli --eval script args