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通用命令

  1. 获取符合规则的键名列表
keys [pattern] # pattern支持glob风格通配符格式
符号 含义
? 匹配一个字符
* 匹配任意个字符
[] 匹配范围内字符,如a[b-d]可以匹配“ab”、“ac”、“ad”
\ 匹配需要转义字符
  1. 判断键是否存在
exists key # 如果键存在则返回整型1,反之返回0
  1. 删除键
del key [key ...] # 支持批量删除,返回值为删除键的个数
  1. 获取键值的数据类型
type key
  1. 获取键的总数
dbsize
  1. 设置键过期时间
expire key seconds # key在seconds秒后过期
  1. 查询当前键的剩余时间
ttl key # 查询key在多少秒后过期
# 如果返回值为-1,则代表key存在且没有设置过期时间
# 如果返回值为-2,则代表key已不存在
  1. 删除键的过期时间
persist key
  1. 清空所有数据库数据
flushall
  1. 清空当前数据库数据
flushdb
  1. 切换到指定数据库
select index # 默认使用0号数据库

Redis数据类型入门

String(字符串类型)常用命令

string可以存储任何形式的字符串,包括二进制数据。

  1. 获取键对应的值
get key # 当键不存在时会返回空(nil)
  1. 设置键值对
set key value

setnx key value # 键不存在时才设置

set key value xx # 键存在时才设置(属更新操作)
  1. 递增/递减数字
incr key # 使当前键自增1,并返回自增后的值

decr key # 使当前键自减1,并返回自减后的值

incrby key num # 使当前键自增num

decrby key num # 使当前键自减num
  1. 获取字符串长度
strlen key # 返回键的长度,不存在则返回0
  1. 向尾部追加值
append key value # 如果键不存在则设置新的键值,返回值为总长度
  1. 批量获取/设置多个键值
mget key [key ...] # 获取

mset key1 value1 key2 value2 ... # 新增
  1. 获取字符串指定下标的值
getrange key start end
  1. 设置字符串指定下标的值
setrange key index value

Hash(散列类型)常用命令

hash 是一个 string 类型的 field(字段)和 value(值)的映射表,适合用于存储对象。

  1. 获取散列属性对应的值
# 获取单个属性对应的值
hget key field # 获取多个属性对应的值
hmget key field [field ...] # 获取散列所有属性与值
hgetall key # 获取散列所以属性对应的值
hvals key # 获取散列键对应的所有属性
hkeys key
  1. 设置散列
# 设置单个散列
hset key field value # 设置散列属性,如果属性已存在,则设置失败
hsetnx key field value # 设置散列多个属性值
hmset key field1 value1 field2 value2 ...
  1. 删除散列属性
hdel key field
  1. 判断散列的键是否存在某一属性
hexists key value
  1. 获取散列属性数量
hlen key

List(列表类型)常用命令

  1. 设置列表
# 从列表右侧插入值
rpush key value1 value2 ... # 从列表左侧插入值
lpush key value1 value2 ... # 在列表指定值的前/后插入新值
linsert key before|after value newValue
  1. 删除列表指定值
# 从列表左侧删除一个元素
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
  1. 获取列表值
# 获取列表指定索引范围内所有元素
# start与end为闭区间
lrange key start end # 获取列表指定索引的元素
lindex key index # 获取列表长度
llen key
  1. 修改列表中的值
# 设置列表指定索引对应的值为newValue
lset key index newValue

Set(集合类型)常用命令

  1. 设置集合
# 向集合键中添加元素,如果元素存在,则添加失败
sadd key element
  1. 删除集合中指定元素
# 删除集合中指定的元素
srem key element # 从集合中随机删除count个元素
# 移除后会返回移除的元素
spop key [count]
  1. 获取集合指定值
# 获取集合的数量
scard key # 判断元素是否存在
sismember key element # 从集合中随机获取count个元素
srandmember key [count]
  1. 集合间的交差并操作
# 获取集合间的差集
sdiff key1 key2 ... # 获取集合间的交集
sinter key1 key2 ... # 获取集合间的并集
sunion key1 key2 ...

Zset(有序集合类型)常用命令

  1. 设置有序集合
zadd key score element
  1. 删除有序集合中指定元素
zrem key element

# 删除指定排名内的升序元素
zremrangebyrank key start end # 删除指定分数内的升序元素
zremrangebyscore key minScore maxScore
  1. 获取有序集合指定值
# 获取元素的分数
zscore key element # 获取元素总个数
zcard key # 按照升序排序获取指定索引范围内的元素
# WITHSCORES属性控制是否输出分数值
zrange key start end [WITHSCORES] # 按照升序排序获取指定分数范围内的元素
zrangebyscore key minScore maxScore [WITHSCORES] # 获取有序集合内在指定分数范围内的个数
zcount key minScore maxScore

Redis入门及常用命令学习的更多相关文章

  1. Git版本控制软件结合GitHub从入门到精通常用命令学习手册(转)

    简要参考:http://www.tuicool.com/articles/mEvaq2 http://gitref.org/zh/index.html GIT 学习手册简介 本站为 Git 学习参考手 ...

  2. Docker 入门指南——常用命令

    前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...

  3. mongodb新手入门,mongodb命令学习

    下面来总结一下mongodb新手入门的常用命令吧.要是您是mongodb新手,可以看下. 1,show dbs 查询mongodb里面的数据库列表 如果想查看当前连接在哪个数据库下面,可以直接输入db ...

  4. Linux的几个概念,常用命令学习

    Linux的几个概念,常用命令学习---------------------------------设备名装载点// 通过装载点访问设备-------------------------------- ...

  5. redis 介绍和常用命令

    redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...

  6. mondb 常用命令学习记录

    mondb 常用命令学习记录 一.MongoDB 下载安装 MongoDB官网 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制 ...

  7. Redis数据类型和常用命令

    Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...

  8. mongodb常用命令学习笔记

    mongodb常用命令学习笔记 创建数据库 use DATABASE_NAME eg: use users; 如果数据库不存在,则创建数据库,否则切换到指定数据库.要显示刚刚创建的数据库,需要向数据库 ...

  9. Docker的入门及常用命令

    Docker入门及常用命令 1. 各个容器之间是相互隔离状态: 这样减少了我们软件之间的影响. 2. docker是os层虚拟化架构的一种产品体现, os层虚拟化架构出来的操作系统需要和宿主机操作系统 ...

随机推荐

  1. [hdu6987]Cycle Binary

    定义$x$为$s$的周期,当且仅当$\forall 1\le i\le |s|-x,s_{i}=s_{i+x}$​​(字符串下标从1开始) 令$per(s)$为$s$的正周期构成的集合,$\min p ...

  2. [luogu5204]Train Tracking 2

    考虑一个位置的上界,即$bi=min(c_{i-k+1},c_{i-k+2},--,ci)$,那么每一个位置有两种方式:1.达到上界:2.未达到上界那么可以将权值相同的ci和bi提出来,由于权值不同的 ...

  3. 十.Go并发编程--channel使用

    一.设计原理 Go 语言中最常见的.也是经常被人提及的设计模式就是: "不要通过共享内存来通信,我们应该使用通信来共享内存" 通过共享内存来通信是直接读取内存的数据,而通过通信来共 ...

  4. synchronized的一些理解

    1. 两个普通的synchronized package ThreadTest; import java.util.concurrent.TimeUnit; public class ThreadTe ...

  5. 【机器学习基础】卷积神经网络(CNN)基础

    最近几天陆续补充了一些"线性回归"部分内容,这节继续机器学习基础部分,这节主要对CNN的基础进行整理,仅限于基础原理的了解,更复杂的内容和实践放在以后再进行总结. 卷积神经网络的基 ...

  6. vue指令v-for报错:Elements in iteration expect to have 'v-bind:key' directives.eslint-plugin-vue

    文件–>首选项–>设置–>在搜索框中输入:vetur.validation.template,取消勾选.

  7. Redis线程模型的前世今生

    一.概述 众所周知,Redis是一个高性能的数据存储框架,在高并发的系统设计中,Redis也是一个比较关键的组件,是我们提升系统性能的一大利器.深入去理解Redis高性能的原理显得越发重要,当然Red ...

  8. 全面了解一致性哈希算法及PHP代码实现

    在设计一个分布式系统的架构时,为了提高系统的负载能力,需要把不同的数据分发到不同的服务节点上.因此这里就需要一种分发的机制,其实就是一种算法,来实现这种功能.这里我们就用到了Consistent Ha ...

  9. CF1004D Sonya and Matrix

    不要想当然. 考虑到我们一定有存在个数为\(4\)的倍数的数. 否则第一个不是的数即为\(x\). 那么我们设\(b\)为所有的数的最大值. 那么显然有\(|n - x| + |m - y| = b\ ...

  10. Codeforces 295D - Greg and Caves(dp)

    题意: 给出一个 \(n \times m\) 的矩阵,需对其进行黑白染色,使得以下条件成立: 存在区间 \([l,r]\)(\(1\leq l\leq r\leq n\)),使得第 \(l,l+1, ...