Redis入门及常用命令学习
Redis简介
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
下载安装Redis5.0.X
以Ubuntu20.4为例
运行安装命令
sudo apt-get install redis-server
Redis配置文件
以Ubuntu20.4为例
sudo vim /etc/redis/redis.conf
Redis操作相关命令
部分命令可直接通过键盘Tab键补全
# 卸载命令
sudo apt-get purge --auto-remove redis-server
# 关闭命令
sudo service redis-server stop
# 开启命令
sudo service redis-server start
# 重启命令
sudo service redis-server restart
# Redis命令行客户端
redis-cli
# Redis服务器
redis-server
# Redis性能测试工具
redis-benchmark
# AOF文件修复工具
redis-check-aof
# RDB文件检查工具
redis-check-rdb
Redis五种数据类型
| 类型 | 描述 |
|---|---|
| string | 字符串类型 |
| hash | 散列类型 |
| list | 列表类型 |
| set | 集合类型 |
| zset | 有序集合类型 |
Redis通用命令
- 获取符合规则的键名列表
keys [pattern] # pattern支持glob风格通配符格式
| 符号 | 含义 |
|---|---|
| ? | 匹配一个字符 |
| * | 匹配任意个字符 |
| [] | 匹配范围内字符,如a[b-d]可以匹配“ab”、“ac”、“ad” |
| \ | 匹配需要转义字符 |
- 判断键是否存在
exists key # 如果键存在则返回整型1,反之返回0
- 删除键
del key [key ...] # 支持批量删除,返回值为删除键的个数
- 获取键值的数据类型
type key
- 获取键的总数
dbsize
- 设置键过期时间
expire key seconds # key在seconds秒后过期
- 查询当前键的剩余时间
ttl key # 查询key在多少秒后过期
# 如果返回值为-1,则代表key存在且没有设置过期时间
# 如果返回值为-2,则代表key已不存在
- 删除键的过期时间
persist key
- 清空所有数据库数据
flushall
- 清空当前数据库数据
flushdb
- 切换到指定数据库
select index # 默认使用0号数据库
Redis数据类型入门
String(字符串类型)常用命令
string可以存储任何形式的字符串,包括二进制数据。
- 获取键对应的值
get key # 当键不存在时会返回空(nil)
- 设置键值对
set key value
setnx key value # 键不存在时才设置
set key value xx # 键存在时才设置(属更新操作)
- 递增/递减数字
incr key # 使当前键自增1,并返回自增后的值
decr key # 使当前键自减1,并返回自减后的值
incrby key num # 使当前键自增num
decrby key num # 使当前键自减num
- 获取字符串长度
strlen key # 返回键的长度,不存在则返回0
- 向尾部追加值
append key value # 如果键不存在则设置新的键值,返回值为总长度
- 批量获取/设置多个键值
mget key [key ...] # 获取
mset key1 value1 key2 value2 ... # 新增
- 获取字符串指定下标的值
getrange key start end
- 设置字符串指定下标的值
setrange key index value
Hash(散列类型)常用命令
hash 是一个 string 类型的 field(字段)和 value(值)的映射表,适合用于存储对象。
- 获取散列属性对应的值
# 获取单个属性对应的值
hget key field
# 获取多个属性对应的值
hmget key field [field ...]
# 获取散列所有属性与值
hgetall key
# 获取散列所以属性对应的值
hvals key
# 获取散列键对应的所有属性
hkeys key
- 设置散列
# 设置单个散列
hset key field value
# 设置散列属性,如果属性已存在,则设置失败
hsetnx key field value
# 设置散列多个属性值
hmset key field1 value1 field2 value2 ...
- 删除散列属性
hdel key field
- 判断散列的键是否存在某一属性
hexists key value
- 获取散列属性数量
hlen key
List(列表类型)常用命令
- 设置列表
# 从列表右侧插入值
rpush key value1 value2 ...
# 从列表左侧插入值
lpush key value1 value2 ...
# 在列表指定值的前/后插入新值
linsert key before|after value newValue
- 删除列表指定值
# 从列表左侧删除一个元素
lpop key
# 从列表右侧删除一个元素
rpop key
# 根据count值删除所有相同值的元素
# (1)count>0,从左到右,删除最多count个value相等的项
# (2)count<0,从右到左,删除最多Math.abs(count)个value相等的项
# (3)count=0,删除所有value相等的项
lrem key count value
# 根据索引范围修改列表
ltrim key start end
- 获取列表值
# 获取列表指定索引范围内所有元素
# start与end为闭区间
lrange key start end
# 获取列表指定索引的元素
lindex key index
# 获取列表长度
llen key
- 修改列表中的值
# 设置列表指定索引对应的值为newValue
lset key index newValue
Set(集合类型)常用命令
- 设置集合
# 向集合键中添加元素,如果元素存在,则添加失败
sadd key element
- 删除集合中指定元素
# 删除集合中指定的元素
srem key element
# 从集合中随机删除count个元素
# 移除后会返回移除的元素
spop key [count]
- 获取集合指定值
# 获取集合的数量
scard key
# 判断元素是否存在
sismember key element
# 从集合中随机获取count个元素
srandmember key [count]
- 集合间的交差并操作
# 获取集合间的差集
sdiff key1 key2 ...
# 获取集合间的交集
sinter key1 key2 ...
# 获取集合间的并集
sunion key1 key2 ...
Zset(有序集合类型)常用命令
- 设置有序集合
zadd key score element
- 删除有序集合中指定元素
zrem key element
# 删除指定排名内的升序元素
zremrangebyrank key start end
# 删除指定分数内的升序元素
zremrangebyscore key minScore maxScore
- 获取有序集合指定值
# 获取元素的分数
zscore key element
# 获取元素总个数
zcard key
# 按照升序排序获取指定索引范围内的元素
# WITHSCORES属性控制是否输出分数值
zrange key start end [WITHSCORES]
# 按照升序排序获取指定分数范围内的元素
zrangebyscore key minScore maxScore [WITHSCORES]
# 获取有序集合内在指定分数范围内的个数
zcount key minScore maxScore
Redis入门及常用命令学习的更多相关文章
- Git版本控制软件结合GitHub从入门到精通常用命令学习手册(转)
简要参考:http://www.tuicool.com/articles/mEvaq2 http://gitref.org/zh/index.html GIT 学习手册简介 本站为 Git 学习参考手 ...
- Docker 入门指南——常用命令
前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...
- mongodb新手入门,mongodb命令学习
下面来总结一下mongodb新手入门的常用命令吧.要是您是mongodb新手,可以看下. 1,show dbs 查询mongodb里面的数据库列表 如果想查看当前连接在哪个数据库下面,可以直接输入db ...
- Linux的几个概念,常用命令学习
Linux的几个概念,常用命令学习---------------------------------设备名装载点// 通过装载点访问设备-------------------------------- ...
- redis 介绍和常用命令
redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...
- mondb 常用命令学习记录
mondb 常用命令学习记录 一.MongoDB 下载安装 MongoDB官网 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制 ...
- Redis数据类型和常用命令
Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...
- mongodb常用命令学习笔记
mongodb常用命令学习笔记 创建数据库 use DATABASE_NAME eg: use users; 如果数据库不存在,则创建数据库,否则切换到指定数据库.要显示刚刚创建的数据库,需要向数据库 ...
- Docker的入门及常用命令
Docker入门及常用命令 1. 各个容器之间是相互隔离状态: 这样减少了我们软件之间的影响. 2. docker是os层虚拟化架构的一种产品体现, os层虚拟化架构出来的操作系统需要和宿主机操作系统 ...
随机推荐
- [atARC123F]Insert Addition
前置知识 下面,先来介绍一下Stern-Brocot Tree的结构: 其是一棵满二叉树,每一个节点都是一个最简分数,其中根为$\frac{1}{1}$ 假设前$i$层的中序遍历分数依次为$\frac ...
- 新玩法-使用AllArgsConstructor+filal代替autowired
和下面的代码一样: Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入原因:final修饰的成员变量是不能够被修改的,反射那就没办法了 还有一种写法: @Requir ...
- 互联网java面试宝典
1.为什么使用消息队列啊? 答题: 消息队列的核心功能就是:解耦合,异步,流量削峰解耦:接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负 ...
- 洛谷 P3285 - [SCOI2014]方伯伯的OJ(平衡树)
洛谷题面传送门 在酒店写的,刚了一整晚终于调出来了-- 首先考虑当 \(n\) 比较小(\(10^5\) 级别)的时候怎么解决,我们考虑将所有用户按排名为关键字建立二叉排序树,我们同时再用一个 map ...
- Codeforces 650D - Zip-line(树状数组)
Codeforces 题目传送门 & 洛谷题目传送门 我怕不是个 nt--一开始忽略了"询问独立"这个条件--然后就一直在想有什么办法维护全局 LIS--心态爆炸 首先离散 ...
- 三个 AGC D(AGC037D、AGC043D、AGC050D)
大概就 lxr 讲了 4 个 AGC 的 D,有一个以前做过了不算,另外三个都会做罢( 为了避免开三个博客就把它们合并到一起了 AGC 037 D lxr:难度顺序排列大概是 037<043&l ...
- Codeforces 1483F - Exam(AC 自动机)
Codeforces 题目传送门 & 洛谷题目传送门 一道 ACAM 的 hot tea 首先建出 ACAM.考虑枚举长串,以及短串在长串中出现的最后位置 \(j\),这个复杂度显然是 \(\ ...
- Macbook pro进入恢复模式以及无法进入恢复模式解决方案
看网上很多说用Command+R进入恢复模式,但是,大部分都反馈说,此命令并不能进入恢复模式.我自己也尝试发现了同样问题,最终发现解决方案: 问题出在,[是重新启动电脑,而不是关机+按开机键,否则会造 ...
- Dango之form校验组件
目录 1.引入案例 2. form组件的功能 3. form组件的使用 3.1 自定义form校验类 3.2 校验数据 3.3 渲染页面 3.4 展示错误信息 3.5 自定义校验结果 3.6 form ...
- InnoDB学习(一)之BufferPool
我们知道InnoDB数据库的数据是持久化在磁盘上的,而磁盘的IO速度很慢,如果每次数据库访问都直接访问磁盘,显然严重影响数据库的性能.为了提升数据库的访问性能,InnoDB为数据库的数据增加了内存缓存 ...