> 文章列表 > Redis基础篇

Redis基础篇

Redis基础篇

redis的三大特点:

支持多数据类型,支持持久化,单线程 + 多路IO复用

对键操作的命令:

keys *    查看当前库所有key

exists key   判断key是否存在

del  key   删除

unlink key  非阻塞删除,异步删除

expire  key  seconds  为给定的key设置过期时间

ttl  key  查看还有多少秒过期,-1表示永不过期,-2表示已过期

select  libnum  切换库

dbsize  查看当前数据库key的数量

flushdb

flushall

Redis字符串

string 是redis最基本的数据类型,一个redis字符串value最多是512M

set  设置key - value

get  key  获取value

append  key  value  追加

strlen  key  获取key 对应 value 的长度

setnx  key value  只有key不存在时,设置key的值

incr  key   给value+1

decr key   给value-1

incrby  key  步长  给value +步长

decrby key  步长  给value -步长

mset key-val  key-val  ...      一次设置多个key-val

mget  key1  key2  key3  ...   一次获取多个值

msetnx  key-val  key-val  key-val  只要有一个存在,其他的都不会成功   原子性的

set  range  key  3 val  //范围内添加val

get  range  key  (1-3)   

setex  key  20  value   //设置key-val的时候,就设置过期时间

getset  key  new_value  //获取旧值,同时覆盖为新值

Redis列表

单键多值

将多个值存储在双向链表中

lpush   key1  v1  v2  v3   //头插

lrange  key1  0   -1

lpush   key2  v1  v2  v3   //尾插

lrange  key2  0   -1

lpop   key   //头删

rpop   key  //尾删

rpoplpush  key1  key2  //key1尾巴上val拿下来,放到key2的头上

lindex  key  idx   //按照索引下标获取元素

llen key   //获取列表长度

linsert  key before  "value"  "newvalue"   //value前添加newvalue

lerm key  n  "value"   //从左边删除 n个 value

lset  key  idx   newvalue   //把idx的oldvalue 替换为 newvalue

底层数据结构:quicklist

当数据量比较小时,使用ziplist

当数据大时,将多个ziplist连接成双向链表

Redis集合

sadd  key  v1 v2  v3  //添加

smembers  key  //查看

sismember key  v2  //是否存在

scard  key  //返回集合元素个数

srem  key  v1 v2  //删除集合元素

spop  key   //随机吐出一个值,并删除

srandmember  key  2  //随机从key取出两个val,但不删除

smove  k1   k2   v3  //把k1中一个val,移动到k2

sinter  k1  k2     //获取两个集合的交集

sunion k1 k2   //获取两个集合的所有元素

sdiff  k1  k2    //取出k1有,但k2没有的

底层数据结构:哈希表

Redis Hash

hset   key  字段  val     //差一个字段---值

hget   key  字段           //获取字段的所有值

hmset  key  字段1  val1   字段2  val2    字段3   val3    //批量设置

hexists  key  字段        //判断字段是否存在

hkeys  key    //查看key的所有字段

hvals  key     //查看所有字段对应的值

hincrby key 字段  2   //给字段+2

hsetnx  key  字段  40  //字段存在不添加,不存在才添加         

底层数据结构:数据量小,ziplist,数据量大,hashtable

Redis Zset (有序集合)

zadd   key  1  C++  2  java  3  C   

zrange  key  n1  n2  //查看n1到n2的数据

zrange  key  n1  n2  withscores

zrangebyscore  key  n1  n2  //把分数在n1到n2的取出

zrangebyscore  key  n1  n2 withscore

zrevrangebyscore  key  n1  n2   //从大到小   n1 > n2

zincrby  key  50  java   //增加

zrem  key  C++   //删除

zcount  key  200 500  //统计

zrank  key  C++  //查看排名 从0开始

底层数据结构:hash,跳跃表