如何查看redis进程?
第一种
第二种
2.基础知识
redis有16个数据库,依次索引为0~15
默认是第一个数据库,也就是索引为0
怎么知道的呢?去查看 redis-config 配置文件
那么如果想切换数据库,怎么办呢?
使用select 索引数字
怎么查看数据库的大小呢?
使用dbsize
注:flushall 清空所有数据库的数据
flushdb 清空当前数据库
keys * 查看当前数据库所有的key
redis是单线程还是多线程?
是单线程!!
redis是基于内存操作,CPU不是redis性能瓶颈,redis的性能瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!
redis 是C语言写的,官方提供的数据为十万+的QPS,完全不比同样是使用key-value的Memecache差!
redis单线程为什么还那么快?
误区1:高性能的服务器一定是多线程的?
误区2:多线程(CPU上下文会切换)一定比单线程效率高?
先要了解 CPU>内存>硬盘的速度
3.五大数据类型
1.redis-key
设置key的过期时间(秒)
怎么查看key值类型?
type key
怎么把当前数据库的key 移动到 别的数据库?
move key 数据库索引数字
2.String
如果想在type类型为String的value后面追加字符串,该怎么办呢?
使用 append key 想追加的字符串
如果想看看value的长度呢?
使用 strlen key
文章的浏览量或者视频的播放量,如果用redis怎么实现呢?
相当于实现自增 value++
使用 incr key
同理 自减 就使用 decr key
那么如果是想实现步长(指定增量)呢?
相当于实现 value+= value -=
使用 incrby key 步长数字
decrby key 步长数字
那么如果想得到字符串的某部分呢?
也就是截取,相当于java的字符串的substring()方法
使用getrange key 开始索引数字 结束索引数字
如果想替换字符串的某部分呢?
使用setrange key 开始索引数字
setex = set expire
使用 setex key second value
###########################################
###########################################
如果我想在某个key不存在的时候,就创建呢?
使用 setnx
###########################################
###########################################
如果我想一条命令就创建多个key,并且一条命令获取多个key,怎么办?
mset key value [key value ...]
mget key [key ...]
记忆:前面加上一个 m = many 多个的意思
###########################################
###########################################
但是注意:msetnx 是一个原子性的操作,要么一起成功,要么一起失败
###########################################
###########################################
如果我想创建一个对象,怎么搞呢?
###########################################
###########################################
这里key是一个巧妙的设计: user : {id} : {filed} ,如此设计在redis中是完全OK的!
###########################################
###########################################