学习redis常用命令

1.开启服务和客户端

 

image-20200723232544524

 

如何查看redis进程?

第一种

 

image-20200723232951677

 

第二种

 

image-20200723233027748

2.基础知识

redis有16个数据库,依次索引为0~15

默认是第一个数据库,也就是索引为0

怎么知道的呢?去查看 redis-config 配置文件

 

image-20200723233501769

 

那么如果想切换数据库,怎么办呢?

使用select 索引数字

 

image-20200723233833615

 

怎么查看数据库的大小呢?

使用dbsize

 

image-20200723234518281

 

注:flushall 清空所有数据库的数据

flushdb 清空当前数据库

keys * 查看当前数据库所有的key

 

redis是单线程还是多线程?

是单线程!!

redis是基于内存操作,CPU不是redis性能瓶颈,redis的性能瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!

redis 是C语言写的,官方提供的数据为十万+的QPS,完全不比同样是使用key-value的Memecache差!

redis单线程为什么还那么快?

误区1:高性能的服务器一定是多线程的?

误区2:多线程(CPU上下文会切换)一定比单线程效率高?

先要了解 CPU>内存>硬盘的速度

核心:redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效果是最高的,多线程(CPU上下文会切换:耗时的操作!!!),对于内存系统来说,没有上下文切换,效率就是最高的!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!

 

 

3.五大数据类型

1.redis-key

 

image-20200724000851636

 

设置key的过期时间(秒)

 

image-20200724001506642

怎么查看key值类型?

type key

怎么把当前数据库的key 移动到 别的数据库?

move key 数据库索引数字

 

image-20200724002248055

 

2.String

如果想在type类型为String的value后面追加字符串,该怎么办呢?

使用 append key 想追加的字符串

 

image-20200724183842937

 

如果想看看value的长度呢?

使用 strlen key

 

image-20200724184049527

 

文章的浏览量或者视频的播放量,如果用redis怎么实现呢?

相当于实现自增 value++

使用 incr key

 

image-20200724230931144

 

同理 自减 就使用 decr key

 

那么如果是想实现步长(指定增量)呢?

相当于实现 value+= value -=

使用 incrby key 步长数字

decrby key 步长数字

 

image-20200724231624292

 

那么如果想得到字符串的某部分呢?

也就是截取,相当于java的字符串的substring()方法

使用getrange key 开始索引数字 结束索引数字

 

image-20200724233533580

 

如果想替换字符串的某部分呢?

使用setrange key 开始索引数字

 

image-20200724234147474

 

 

如果我想在set key value 同时 expire second 呢?

setex = set expire

使用 setex key second value

###########################################

image-20200725105025578

###########################################

如果我想在某个key不存在的时候,就创建呢?

setnx = set not exists

使用 setnx

###########################################

image-20200725105718963

###########################################

如果我想一条命令就创建多个key,并且一条命令获取多个key,怎么办?

mset key value [key value ...]

mget key [key ...]

记忆:前面加上一个 m = many 多个的意思

###########################################

image-20200725110720322

###########################################

但是注意:msetnx 是一个原子性的操作,要么一起成功,要么一起失败

 

###########################################

image-20200725112654483

image-20200725112914242

 

###########################################

 

如果我想创建一个对象,怎么搞呢?

###########################################

 

image-20200725114007467

###########################################

 

这里key是一个巧妙的设计: user : {id} : {filed} ,如此设计在redis中是完全OK的!

###########################################

image-20200725114931385

###########################################

 

原文地址:https://www.cnblogs.com/zui-ai-java/p/13369750.html