专注于快乐的事情

Redis入门

Redis学习

简介

Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成。

常用命令

键总数

dbsize

检查键是否存在

exists not_exist_key
如果键存在则返回1,不存在则返回0

删除键

del a b c

键过期

expire hello 10
为键hello设置了10秒过期时间

查看键的剩余过期

ttl命令会返回键的剩余过期时间,它有3种返回值:
·大于等于0的整数:键剩余的过期时间。
·-1:键没设置过期时间。
·-2:键不存在

ttl hello

查询内部编码

object encoding mylist

查看键的数据结构类型

type mylist

设置值

set key value [ex seconds] [px milliseconds] [nx|xx]
例如
SET abc abcvalue EX 60 NX

ex seconds:为键设置秒级过期时间。
px milliseconds:为键设置毫秒级过期时间。
nx:键必须不存在,才可以设置成功,用于添加。
xx:与nx相反,键必须存在,才可以设置成功,用于更新

setnx

setnx hello redis
如果有多个客户端同时执行setnx key value,根据setnx的特性只有一个客户端能设置成功,setnx可以作为分布式锁的一种实现方案

获取值

get hello

批量设置值和获取值

mset key value

mset a 1 b 2 c 3 d 4

mget a b c d

计数

incr key

incr命令用于对值做自增操作,返回结果分为三种情况:
·值不是整数,返回错误。
·值是整数,返回自增后的结果。
·键不存在,按照值为0自增,返回结果为1。

除了incr命令,Redis提供了decr(自减)、incrby(自增指定数字)、decrby(自减指定数字)、incrbyfloat(自增浮点数)

数据结构

哈希

设置值

hset user:1 name abc

获取值

hget user:1 name

删除field

hdel user:1 name

批量设置和获取

hmset user:1 name mike age 12 city tianjin

hmget user:1 name age city

获取所有field

hkeys user:1

列表

在Redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。

列表是一种比较灵活的数据结构,它可以充当栈和队列的角色,在实际开发上有很多应用场景。

获取列表指定索引下标的元素

lindex listkey -1

索引下标有两个特点:第一,索引下标从左到右分别是0到N-1,但是从右到左分别是-1到-N

获取指定范围内的元素列表

从左到右获取列表元素
lrange listkey 1 3

从右向左插入元素
rpush listkey c b a

从列表左边开始删除4个为a的元素
lrem listkey 4 a

典型使用场景

缓存

计数

许多应用都会使用Redis作为计数的基础工具,它可以实现快速计数、查询缓存的功能,同时数据可以异步落地到其他数据源。

排行榜系统

Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。

###分布式锁

###一分钟不能超过5次

SET key value EX 60 NX

#参考 #

评论系统未开启,无法评论!