Redis基础数据结构&命令总结

583 阅读4分钟

整理总结一下Redis基础命令和数据结构,忘记了方便查阅


1. 数据结构1-字符串(String)

可以是保存字符串、整数和浮点数

设值命令

set num 23 ex 10  //10秒后过期, px 10000 毫秒过期           
setnx name test  //不存在键name时,返回1且设置成功;存在的话失败0           
set age 25 xx      //存在键age时,返回1成功

获值命令

get age //存在则返回value, 不存在返回nil

批量设值

mset fruit apple num 5   #  fruit apple 为一组;num 5 为一组

批量获取

mget fruit num address //返回apple  5, address为nil

字符串计数

incr age //必须为整数自加1,非整数返回错误,无age键从0自增返回1
decr age //整数age减1
incrby age 2 //整数age+2
decrby age 2 //整数age-2
incrbyfloat score 1.1 //浮点型score+1.1

append追加指令

set name hello
append name world //追加后成helloworld

注意: 
set age 34
append age 23   // 得到 "3423"
incr age  // 得到 3424

字符串长度

set hello "世界"
strlen hello //结果6,每个中文占3个字节

截取字符串

set name helloworld
getrange name 2 4  //返回 llo


2. 数据结构2 - 哈希(Hash)

哈希hash是一个string类型的field和value的映射表,hash特适合用于存储对象

命令 

hset key field value

设值

hset user:1 name ying        //成功返回1,失败返回0

取值

hget user:1 name              //返回ying

删值

hdel user:1 age               //返回删除的个数

计算个数

hset user:1 name james
hset user:1 age 23              
hlen user:1    //返回2,user:1有两个属性值

批量设值

hmset user:2  name ying  age 23 sex male //返回OK

批量取值

hmget user:2 name age sex   //返回三行:ying 23 male

判断field是否存在

hexists user:2 name //若存在返回1,不存在返回0

获取所有field

hkeys user:2            // 返回name age sex三个field

获取user:2所有value

hvals user:2     // 返回ying 23 male

获取user:2所有field与value

hgetall user:2 //name age sex james 23 boy值

增加1

hincrby user:2 age 1      //age+1

hincrbyfloat user:2 age 2   //浮点型加2


3. 数据结构3-列表<list>

用来存储多个有序的字符串,一个列表最多可存2的32次方减1个元素


添加命令

rpush ying c b a //从右向左插入cba,返回值3

lrange ying 0 -1 //从左到右获取列表所有元素返回 c b a

lpush key c b a //从左向右插入cba

linsert ying before b teacher 
//在b之前插入teacher, after为之后,使用lrange ying 0 -1 查看:c teacher b a

查找命令:

lrange key start end //索引下标特点:从左到右为0到N-1

         
lindex ying -1 //返回最右末尾a,-2返回倒数第二个

         
llen ying        //返回当前列表长度

         
lpop ying       //把最左边的第一个元素c删除

         
rpop ying      //把最右边的元素a删


4. 数据结构4-集合<set>

保存多元素,与列表不一样的是不允许有重复元素,且集合是无序,一个集合最多可存2的32次方减1个元素,除了支持增删改查,还支持集合交集、并集、差集;


exists user     //检查user键值是否存在 
sadd user a b c //向user插入3个元素,返回3 
sadd user a b   //若再加入相同的元素,则重复无效,返回0 
smember user //获取user的所有元素,返回结果无序  
srem user a  //返回1,删除a元素 
scard user   //返回2,计算元素个数


5. 数据结构5-有序集合(ZSET)

常用于排行榜,如视频网站需要对用户上传视频做排行榜,或点赞数与集合有联系,不能有重复的成员


zadd key score member [score member......]  

zadd user:zan 200 james //james的点赞数1, 返回操作成功的条数1  
zadd user:zan 200 james 120 mike 100 lee// 返回3  
zadd test:1 nx 100 james  //键test:1必须不存在,主用于添加  
zadd test:1 xx incr 200 james  //键test:1必须存在,主用于修改,此时为300  
zadd test:1 xx ch incr -299 james //返回操作结果1,300-299=1     
zrange test:1 0 -1 withscores //查看点赞(分数)与成员名    
zcard test:1     //计算成员个数, 返回1


6. Redis全局命令

查看所有键

keys *  

键总数 

dbsize       //2个键,如果存在大量键,线上禁止使用此指令

检查键是否存在

exists key  //存在返回1,不存在返回0

删除键

del key      //del hello school, 返回删除键个数,删除不存在键返回0

键过期

expire key seconds        //set name test  expire name 10,表示10秒过期               
ttl key                   // 查看剩余的过期时

键的数据结构类型

type key             // type hello  返回string,键不存在返回none