网站首页 > 基础教程 正文
Redis API的使用和理解
通用命令
keys:遍历所有key(keys *)
dbsize:计算Key的总数
exists key:判断key是否存在
del key[key...]:删除指定key-value
expire key seconds:key在seconds秒后过期
ttl key:查看key剩余的过期时间
persist key:去掉Key的过期时间
type key:返回key的类型
数据结构和内部编码
单线程架构
Redis在同一时间点,只会执行一条命令
Redis中单线程为什么这么快?
1,纯内存
2,非阻塞IO
3,避免线程切换和竞态消耗
字符串类型
key:字符串 value:(字符串、数字、json、二进制...)
get key:获取key对应的value
set key value:设置key-value
del key:删除key-value
incr key:key自增1,如果key不存在,自增后get(key)=1
decr key:自减,如果key不存在,自减后get(key)=-1
incrby key k:key自增Key,如果Key不存在,自增后get(key)=k
decrby key k:key自减Key,如果Key不存在,自增后get(key)=-k
set key value:不管Key是否存在,都设置
setnx key value: key不存在才设置
set key value xx: key 存在才设置
mget key1 key2 key3...:批量获取key,原子操作
mset key1 value1 key2 value2 ...:批量设置key-value
getset key newvalue:set key newvalue并返回旧的value
append key value:将value追加到旧的value
strlen key:返回字符串的长度(注意中文,中文不是占有一个字节)
incrbyfloat key 3.5:增加key对应的值3.5
getrange start end:获取字符串指定下标所有的值
setrange key index value:设置指定下标所有对应的值
实战:
记录网站每个用户个人主页的访问量?--incr userid:pageview
缓存视频的基本信息(数据源在mysql)?伪代码
分布式id生成器? incr id
哈希类型
特点:key field value
field不能相同,value可以相同
重要API:
hget key field:获取hash key对应的field的value
hset key field value:设置hash key对应field的value
hdel:删除hash key 对应field的value
hexists key field:判断hash key是否有field
hlen key:获取hash key field的数量
hmget key field1 field ...fieldN:批量获取hashkey的一批field对应的值
hmset key field1 value1 field2 value2 ... fieldN valueN:批量设置hash key的一批 field value
hgetall key:返回hash key对应所有的field和value
hvals key:返回hash key对应所有field的value
hkeys key:返回hash key对应所有field
实战:
记录网站每个用户个人主页的访问量?
hincrby user:1:info pageview count
缓存视频的基本信息?
hsetnx key field value:设置hash key对应field的value(如field已经存在则失败)
hincrby key field intCounter:hash key对应的field的value自增intCounter
hincrbyfloat key field floatCounter:hincrby浮点数版
列表类型
特点:有序、可重复
rpush key value1 value2 ... valueN:从列表右端插入值(1-N)
lpush key value1 value2 ... valueN:从列表左端插入值(1-N)
linsert key before|after value newValue:在list指定的值前|后插入newValue
lpop key:从列表左侧弹出一个item
rpop key:从列表右侧弹出一个item
lrem key count vlaue:根据count值,从列表中删除所有value相等的项
count>0,从左到右,删除最多count个value相等的项
count<0,从右到左,删除最多Math.abs(count)个value相等的项
count=0,删除所有value相等的项
ltrim key start end:按照索引范围修剪列表
lrange key start end(包含end):获取列表指定索引范围所有item
lindex key index:获取列表指定索引的item
llen key:获取列表长度
lset key index newValue:设置列表指定索引值为newValue
tips:
栈:
lpush+lpop=statck
队列:
lpush+rpop=queue
有固定数量的列表
lpush+ltrim
消息队列:
lpush+brpop
集合类型
特点:无序、不可重复
sadd key element:向集合key添加element(如果element已经存在,添加失败)
srem key element:将集合key中的element移除掉
实战:
抽奖系统
标签(tag)
1,给用户添加标签
2,给标签添加用户
集合间的操作: sdiff sinter sunion
实战
有序集合类型
特点:有序
集合vs有序集合
重要api:
zadd key score element(可以是多对)
zrem key element(可以是多个)删除元素
zscore key element: 返回元素的分数
zincrby key increScore element:增加或减少元素的分数
zcard key:返回元素的个数
zrange key start end[withscores]:返回指定索引范围的升序元素[分值]
zrangebyscore key minScore maxScore[withscores]:返回指定分数返回内的升序元素
zcount key minScore maxScore:返回有序集合内在指定分数返回内的个数
zremrangebyrank key start end:删除指定排名内的升序元素
zremrangebyscore key minScore maxScore:删除指定分数内的升序元素
实战:排行榜
score :timeStamp saleCount followCount
猜你喜欢
- 2024-10-12 Java开发你知道这些API事半功倍Redis必知必会的API
- 2024-10-12 关于Redis的知识点,你都学会了吗?
- 2024-10-12 「干货」Java后端开发高频面试题 java后端开发面试自我介绍
- 2024-10-12 redis常用命令总结(下) redis基本操作命令
- 2024-10-12 Redis常用简明命令 redis的命令大全
- 2024-10-12 Redis有序集合详解 redis在的有序集合中在数据量极少的情况下使用
- 2024-10-12 高性能的key-value数据库-Redis基本使用
- 2024-10-12 一、Redis基础和应用篇 redis相关知识
- 2024-10-12 NoSQL学习:初学Redis之Redis的数据模型
- 2024-10-12 redis 所支持的数据类型以及其应用场景
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)