当前位置:首页 > 问答 > 正文

Redis数据库怎么搭建啊,还有那个redis表咋整,简单点教教我吧

Redis数据库怎么搭建

你把Redis想象成一个特别厉害的小本本,它不是像MySQL那种需要建很多表的关系型数据库,而是一个简单的键值对仓库,键就是名字,值就是内容,比如你记下“张三的手机号:13800138000”,这里“张三的手机号”就是键,“13800138000”就是值,搭建Redis,其实就是把这个“小本本”的运行环境给准备起来。

用Docker搭建(最省事,强烈推荐)

如果你对服务器命令不熟,或者怕把系统环境搞乱,用Docker是最好不过的了,Docker就像一个神奇的集装箱,能把Redis和它需要的一切环境打包在一起,与你的电脑系统隔离开,装起来卸掉都特别方便。

  1. 先安装Docker: 你得先有个Docker才能用,去Docker的官网(https://www.docker.com/products/docker-desktop)根据你的电脑系统(Windows、Mac 或者 Linux)下载一个Docker Desktop安装上,安装过程就是一路点“下一步”就行,安装完可能需要重启一下电脑。

  2. 拉取Redis镜像: 安装好Docker之后,打开你的命令行工具(Windows叫PowerShell或CMD,Mac叫终端),输入下面这行命令,然后回车:

    docker pull redis:latest

    这行命令的意思是:“Docker啊,你去网上官方仓库里,把最新版本的Redis那个‘集装箱蓝图’给我下载到本地来。” 等它下载完成就行了。

  3. 运行Redis容器: 蓝图有了,现在要把它变成真正运行的“集装箱”,再输入下面这行命令:

    docker run --name my-redis -p 6379:6379 -d redis

    我们来解释一下这行命令:

    • docker run:命令Docker运行一个容器。
    • --name my-redis:给这个容器起个名字,叫“my-redis”,方便你后面管理。
    • -p 6379:6379:这是端口映射,左边6379是你电脑的端口,右边6379是Redis容器内部的端口,意思是说,以后你想访问Redis,就找你电脑的6379端口,Docker会自动把这个请求转发到容器里的Redis服务上。
    • -d:让容器在“后台”运行,这样你关了命令行窗口,Redis服务也不会停。
    • redis:告诉Docker,我要基于刚才下载的那个redis镜像来运行。

    命令执行后,会显示一长串字符,不用管它,这时候你的Redis服务就已经在后台悄悄地跑起来了!

直接在本机安装(适合想了解细节的人)

如果你用的是Mac,并且安装了Homebrew(一个软件包管理器),那就超级简单,在终端里输入:

brew install redis

然后启动它:

redis-server

如果看到屏幕上出现一个红色的Redis图标和一些日志信息,就说明启动成功了。

Redis数据库怎么搭建啊,还有那个redis表咋整,简单点教教我吧

如果你用的是Ubuntu这样的Linux系统,可以用apt命令安装:

sudo apt update
sudo apt install redis-server

安装完后,Redis通常会自动启动,你可以用 sudo systemctl status redis 来检查它是不是在运行。

Windows官方不直接提供安装版,所以还是强烈建议用上面的Docker方法,省去很多麻烦。

测试一下是否成功:

无论你用哪种方法,搭建好后都要测试一下,打开一个新的命令行窗口,输入:

redis-cli ping

如果Redis服务正常运行,它会回复你一个 PONG,这就好比你对它喊“喂,在吗?”,它回你“在呢!”,看到这个,恭喜你,Redis数据库搭建完毕!


第二部分:那个redis表咋整

这里是个非常重要的概念:Redis里面没有“表”(Table)这个东西!

你可能会懵,数据库怎么能没有表呢?这是因为Redis和MySQL、Oracle这类关系型数据库是截然不同的两种东西,它们的设计初衷和擅长的地方不一样。

  • 关系型数据库(如MySQL):就像一个大档案馆,数据规规矩矩地存放在不同的表格里,表格之间有复杂的关联关系,适合存储需要复杂查询、有严格结构的数据(比如订单、用户信息)。
  • Redis:更像是一个放在内存里的超级高速缓存区或者一个万能工具箱,它的速度极快(因为数据存在内存里),数据结构非常灵活,它不是为了替代档案馆,而是为了解决一些特定场景下的性能瓶颈,比如网站首页的热门文章列表、用户的登录会话、秒杀活动的商品库存计数等。

那在Redis里,数据是怎么组织的呢?靠的是数据类型,你可以理解为,Redis给了你几种不同功能的“小本本”,你可以根据你要记的内容来选择用哪个本本,键(Key)就是每个条目的名字。

Redis数据库怎么搭建啊,还有那个redis表咋整,简单点教教我吧

下面给你介绍几个最常用的“小本本”(数据类型):

  1. String(字符串):最基础的本本,就是简单的键值对。

    • 干嘛用:存一个单一的值,比如用户的登录状态、某个配置项、计数器。

    • 例子

      # 写入:set [键] [值]
      set user:1000:name "张三"
      set website:visit:count 10500
      # 读取:get [键]
      get user:1000:name  # 会返回 "张三"
  2. Hash(哈希):这个最像“表”的概念,它本身是一个键,但这个键对应的值里面,又包含了一组字段和值的映射。

    • 干嘛用:存一个对象的多个属性,比如一个用户的信息(姓名、年龄、城市),比用多个String来存要高效得多。

    • 例子

      # 写入:hset [大键] [字段名] [字段值]
      hset user:1000 name "张三" age 30 city "北京"
      # 读取一个字段:hget [大键] [字段名]
      hget user:1000 name  # 返回 "张三"
      # 读取所有:hgetall [大键]
      hgetall user:1000  # 会返回 name, 张三, age, 30, city, 北京

      你看,user:1000 这个键就像一个只有一行的表,里面有name、age、city三个字段。

  3. List(列表):一个有序的、可以重复的字符串列表,类似排队。

    Redis数据库怎么搭建啊,还有那个redis表咋整,简单点教教我吧

    • 干嘛用:做消息队列(比如订单排队处理)、记录最新发布的10条微博。

    • 例子

      # 从左边插入:lpush [键] [值1] [值2] ...
      lpush news:latest "新闻A" "新闻B" "新闻C"
      # 从左边取出一段:lrange [键] [起始索引] [结束索引]
      lrange news:latest 0 1  # 返回 "新闻C", "新闻B" (因为后插入的在前面的)
  4. Set(集合):一个无序的、不重复的字符串集合。

    • 干嘛用:存唯一性的东西,比如文章的标签、共同好友。

    • 例子

      # 添加元素:sadd [键] [成员1] [成员2] ...
      sadd article:1000:tags "科技" "编程" "Redis"
      # 判断是否存在:sismember [键] [成员]
      sismember article:1000:tags "科技"  # 返回 1 (表示存在)
  5. Sorted Set(有序集合):带分数的Set,可以根据分数排序。

    • 干嘛用:排行榜!比如游戏积分榜、热搜榜。

    • 例子

      # 添加(带分数):zadd [键] [分数] [成员]
      zadd game:score 1000 "玩家A" 800 "玩家B" 1500 "玩家C"
      # 按分数从高到低取前两名:zrevrange [键] [起始排名] [结束排名]
      zrevrange game:score 0 1  # 返回 "玩家C", "玩家A"

所以你问“redis表咋整”,答案就是:忘掉“表”这个概念,你先想清楚你要存的是什么数据,有什么特点:

  • 如果是一个对象的多个属性,用 Hash
  • 如果就是一个简单的值或者计数器,用 String
  • 如果要排队或者存最新N条记录,用 List
  • 如果要存不能重复的标签、分类,用 Set
  • 如果要做排行榜,用 Sorted Set

希望这个解释能让你对Redis有个直观的认识,先从Docker把它跑起来,然后用 redis-cli 命令行工具输入上面的例子试试手感,很快就明白了!