【笔记】Redis学习笔记

前言

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。从2015年6月开始,Redis的开发由Redis Labs赞助,而2013年5月至2015年6月期间,其开发由Pivotal赞助。在2013年5月之前,其开发由VMware赞助。根据月度排行网站DB-Engines.com的数据,Redis是最流行的键值对存储数据库。(维基百科

数据类型及相关命令

  • Redis存储的是key-value格式的数据,其中key是字符串,value有五种不同的数据类型

字符串类型String

<key>:键
<value>:值

新增/修改

  • 如果不存在就新增,如果存在就修改
  • Redis最大可以存512M的字符串
1
set <key> <value>
新增时设置存活时间

<second>:存活时间,单位秒

1
setex <key> <second> <value>
批量新增
1
mset <key_1> <value_1> <key_2> <value_2>

查询

1
get <key>
批量查询
1
mget <key_1> <value_1> <key_2> <value_2>
根据条件查询字符串

*:任意个数任意字符占位符
?:一个任意字符占位符

1
keys name*?
查询全部字符串
1
keys *
查询字符串长度
1
strlen <key>
查询字符串是否存在
1
exists <key>

删除

1
del <key>
清空数据库
清空当前数据库
1
flushdb
清空所有数据库
1
flushall

追加字符串

1
append <key> <value>

自增与自减

自增1
1
incr <key>
自增指定数值

<n>:自增的数值

1
incrby <n> <key>
自减1
1
decr <key>
自减指定数值
1
decr <n> <key>

哈希类型hash

  • map格式
  • 可以存储键值对

<k>:值中存储的键值对的键
<v>:值中存储的键值对的值

新增键值对

1
hset <key> <k> <v>
新增多个键值对
1
hmset <key> <k> <v> <k> <v>
仅当不存在时新增键值对
1
hsetnx <key> <k> <v>

查询

查询所有的键值对
1
hgetall <key>
查询所有值
1
hvals <key>
查询所有键
1
hkeys <key>
根据键查询值
1
hget <key> <k>
根据多个键查询值
1
hmget <key> <k> <k>
查询键值对是否存在

1:存在
0:不存在

1
hexists <key>
查询所有键值对的数量
1
hlen <key>
获取指定键的值的字符串长度
1
hstrlen <key> <k>

删除

根据指定键删除键值对
1
hdel <key> <k>

列表类型list

  • linkedlist格式
  • 可以存储列表
  • 允许重复元素
  • 有序

新增

从列表头新增(从左到右)
1
lpush <key> <value>
仅当列表存在时
1
lpushx <key> <value>
从列表尾新增(从右到左)
1
rpush <key> <value>
仅当列表存在时
1
rpushx <key> <value>

查询

获取指定范围的元素

<start>:指定获取的列表范围的起始值,如果为正数则从左侧开始计算下标,如果为负数则从右侧开始计算下标
<end>:指定获取的列表范围的截止值,如果为正数则从左侧开始计算下标,如果为负数则从右侧开始计算下标

1
lrange <key> <start> <end>
获取所有
1
lrange <key> 0 -1
查询列表长度
  • 如果列表不存在,返回0
1
llen <key>

删除

删除出现指定次数的指定元素

<value>:元素名
<count>:出现指定次数

>0:从头向尾删除
<0:从尾向头删除
=0:删除所有

1
lrem <key> <count> <value>
删除整个列表
1
del <key>

弹出

  • 数据返回,并将数据删除
  • 如果最后一个数据都被弹出,则这个列表也会被删除
从列表头弹出(从左到右)
1
lpop <key>
从列表尾弹出(从右到左)
1
rpop <key>

修改

从列表头修改(从左到右)

<index>:指定下标
<value>:修改后的值

1
lset <key> <index> <value>

集合类型set

  • 可以存储列表
  • 不允许重复元素
  • 无序

新增

1
sadd <key> <value>

查询

查询所有
1
smembers <key>
查询指定值是否存在
1
sismember <key> <value>

删除

  • 删除set集合中指定key的元素
1
srem <key> <value>

有序集合类型sortedset

  • 可以存储列表
  • 不允许重复元素
  • 有序

<score>:分数,将来会根据给定的分数排序

新增

1
zadd <key> <score> <value>

查询

1
zrange <key> <start> <end>
同时获取分数
1
zrange <key> <start> <end> withscore

删除

1
zrem key value

通用命令

查看所有的键

1
keys *

查看指定键的数据类型

1
type <key>

删除指定的键值对

1
del <key>

切换数据库

0:redis有0~15共16个数据库

1
select 0

生命周期

指定时间自动销毁

<s>:指定秒后自动销毁

1
expire <key> <n>

<ms>:指定毫秒后自动销毁

1
pexpire <key> <ms>

查看剩余存活时间

-2:数据不存在
-1:该数据永不超时

1
ttl <key>

取消自动销毁

1
persist <key>

完成

参考文献

哔哩哔哩——黎曼的猜想
哔哩哔哩——尚硅谷