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三个元素

 

posted @ 2025-07-12 13:39  连师傅只会helloword  阅读(14)  评论(0)    收藏  举报