redis基础命令
ps -ef 查找所有进程
ps -ef | grep redis //先查找所有进程,再从里面查找redis显示出来
关系型数据库的四大特性ACID,A代表原子性,C代表一致性,I代表隔离性,D代表持久性
一、基本概念
mongodb和redis都属于NoSQL数据库,但是存储的数据的类型不同
mongodb存储的是json类型的数据
redis存储的是key-value类型的数据
前台启动redis
redis-server
在宿主机
1## 创建目录 mkdir -p /home/redis/conf 2## 创建文件 touch /home/redis/conf/redis.conf
启动容器的命令
docker run -d --name redis \ -p 6379:6379 \ --restart unless-stopped \ -v /home/redis/data:/data \ -v /home/redis/conf/redis.conf:/etc/redis/redis.conf \ redis:6.2.6 redis-server /etc/redis/redis.conf
docker run -d --name redis \ //启动容器,名字为redis
-p 6379:6379 \ //将宿主机的端口映射到容器上
--restart unless-stopped \ //设置为”除非手动关闭,否则出现意外时,自动启动“
-v /home/redis/data:/data \ //挂载卷,将宿主机的/home/redis/data与容器的data绑定
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf \ //挂载卷,将宿主机的/home/redis/conf/redis.conf与容器的/etc/redis/redis.conf绑定
redis:6.2.6 redis-server /etc/redis/redis.conf //通过redis-server启动容器,并且把/etc/redis/redis.conf 作为启动的配置文件
在后续启动时,只需要docker start redis就可以启动
如果使用docker启动redis,在redis.conf中
在 Docker 容器中,Redis 不应该以守护进程模式运行(daemonize no)!
守护进程模式会让 Redis 进程变成后台进程,导致 Docker 容器主进程退出,容器自动停止。
应该不写daemonize 或者写 daemonize no
启动redis,并指定对应的配置文件
redis-server redis.conf
在使用docker命令进入redis命令控制台时 (-a代表输入密码 123456就是我的redis密码)
①docker exec -it redis redis-cli -a 123456 (在进入控制台时就输入密码)
②docker exec -it redis redis-cli (先进入命令行控制台,再输入密码)
然后auth 123456
二、常用命令
(1)redis通用命令
①keys * //查看所有数据
②del key //删除某条数据,通过key值删除
③exists key //判断某个key是否存在
④expire key 20 //对某个key设置有效期,后边的20的单位是秒。
⑤ttl key //查看某个key剩余有效期
(2)String类型常见命令
⑦incr key //自增1
incrby num 2 //让num自增2
incrbyfloat num 2 //让浮点数类型num自增2
⑧mset k1 v1 k2 v2 k3 v3 //批量增加key-value键值对
mget k1 k2 k3 //批量获取key-value键值对
⑨setex key seconds value //在新建key时就添加一个有效期 等价于 set key value ex seconds
setnx key value //如果key存在的话,就不新增,key不存在才新增 setnx key value 等价于 set key value nx
redis没有table的概念,如果存储多个表的字段都为name怎么办
解答:使用冒号隔开形成层级结构
例如: 表示heima项目下的user中id为1和id为2的数据
使用上面的方式后,在图形化界面中可以展示出对应的结构,如下:
(3)Hash类型命令
Hash将value值又分为了filed和value
①hset key filed value //给key的filed设置值为value
hmset key filed1 value1 filed2 value2 //一次就可以实现给key的多个filed赋值 ps.新版本的hset和hmset都可以实现给多个filed赋值
hget key filed //获取key的filed的值 只能获取一个,无法同时获取多个filed的值
hmget key filed1 filed2 //可以获取key的多个filed的值
hgetall key //直接获取key的所有field的值
hkeys key //得到key的所有filed
hvals key //得到key的所有value
②hincrby key filed 2 //让key的filed自增2 (也可以是负数)
hsetnx key filed value //如果key中不存在filed,将key的filed的值变为value;如果filed已经存在,则无法修改
(4)Hash类型与String类型的区别
如果是String类型的话,想要修改某一个key中的某个字段的值的话,只能通过覆盖原来的整个key的值来改变,无法只修改某一个字段的值
而使用Hash的话,可以直接修改key中某一个filed的值,更加方便 ——直接使用hset语句即可
String类型
Hash类型
(5)List类型命令
BLPOP users2 100 //表示等100秒
BLPOP和BRPOP,运行之后,如果发现没有元素,就等待,此时如果另一个地方使用LPUSH命令,push进一个数据,此时users2中就有数据了,此时BLPOP就会将刚push的数据给显示出来并删除掉,并告诉你阻塞了多长时间
(6)Set类型常用命令(元素不重复,无序)
(7)SortedSet(元素不重复,可排序) 角标从0开始
注意:zcount key min max 查询的是score在min和max之间元素的个数,包括min和max,是个闭区间
zrange key min max 假如min=0,max=2 就会查询出下标从0到下标为2的元素,一共有0 1 2三个元素