Redis API使用和理解

通用命令

  • keys:查看所有的key 复杂度o(n)
  • dbsize:计算key的总数,复杂度O(1)
  • exists:检查key是否存在,复杂度O(1)
  • del:删除指定key-value, 复杂度O(1)
  • expire key seconds:key 在second秒后过期, 复杂度O(1)
  • ttl key:查看key多久过期 ,复杂度O(1)
  • persist key:去掉key的过期时间, 复杂度O(1)
  • type key:返回key的类型, 复杂度O(1)

数据结构和内部编码

单线程架构

单线程为什么这么快

* 纯内存
* 非阻塞IO
* 避免线程切换和竞态消耗

  

单线程注意什么

 * 一次只运行一条命令
 * 拒绝长(慢)命令
 * 其实不是单线程
 fysnc file descrptor
 close file descriptor

5中数据结构
1.字符串
key value
hello world
counter 1
bits 1010101022

最大512M
场景

  • 缓存
  • 计数器
  • 分布式锁

常见命令
字符串类型
get
set key value #不管key是否存在,都设置
setnx key value #key不存,才设置
set key value xx#key存在,才设置
del
incr o(1)
decr o(1)
incrby o(1)
decrby o(1)
mget key1 key2 key3…
mset key1 value1 key2 value2 key3 value3…
getset key newvalue #s设置key的值为newvalue并返回旧的value
append key value#将value追加到旧的value
strlen key #返回字符串的长度(注意中文)
incrbyfloat key 3.3
getrange key start end
setrange key index value

哈希类型
key field value
hget key file
hset key field value
hgetall key#返回key的所有field
hdel key field #删除key的field
hexists key field #判断hash key是否有field
hlen key#获取hash key field的数量
hmget key field1 field2…fieldn
hmset key field1 value1 field2 value2…fieldn valuen
实战:
记录网站每个用户个人主页的访问量?
hincrby user:1:info pageview count
缓存视频的基本信息(数据源在mysql中)伪代码

hvals key # 返回hash key对应所有的field的value
hkeys key #返回hash key对应所有field
小心使用hgetall(单线程)
hsetnx key field value#设置hash key对应field的value
hincrby key field intCounter
hincrbyfloat key field floatCounter

list队列数据类型
key elements
特点:有序,可以重复
rpush key value1 value2…valueN
lpush key value1 value2…valueN
linsert key before|after value newValue
lpop key
rpop key
lrem key count value

    原文作者:燕平
    原文地址: https://segmentfault.com/a/1190000020485799
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞