码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • redis安装与使用


    目录

    redis安装

    redis下载   

    解压安装redis

    移动 Redis 目录

    编译

    安装

    启动redis

    go中使用redis


    redis安装

    redis下载   

    进入官网找到下载地址 Download | Redis

    wget https://download.redis.io/releases/redis-6.2.4.tar.gz
    

    解压安装redis

    tar -zvxf redis-6.2.4.tar.gz

    移动 Redis 目录

    若你不想在下载的目录安装 Redis,可以将 Redis 移动到特定目录安装,如 ‘/usr/local/’ 目录下,将文件夹更改目录,同时修改其名字为 redis:

    mv /root/rredis-6.2.4 /usr/local/redis

    编译测试

    cd /usr/local/redis-6.0.9

    sudo make test

    编译安装

    make PREFIX=/usr/local/redis install ('PREFIX=' 关键字作用是编译的时候用于指定程序存放的路径)

    启动redis

    ./bin/redis-server & ./redis.conf (&后台进程)

    go中使用redis

    1. package main
    2. import (
    3. "fmt"
    4. "github.com/gomodule/redigo/redis"
    5. )
    6. func main() {
    7. // 连接到 redis
    8. conn, err := redis.Dial("tcp", "127.0.0.1:6379")
    9. if err != nil {
    10. fmt.Println("Dial err = ", err)
    11. return
    12. }
    13. defer conn.Close()
    14. opString(conn)
    15. opHash(conn)
    16. }
    17. // opString 对String类型操作
    18. func opString(conn redis.Conn) {
    19. // 通过go向redis写入数据string [key-val]
    20. if _, err := conn.Do("set", "name", "xiaoming"); err != nil {
    21. fmt.Println("Set err = ", err)
    22. return
    23. }
    24. // 通过go向redis读取数据string [key-val]
    25. r, err := redis.String(conn.Do("Get", "name"))
    26. if err != nil {
    27. fmt.Println("redis set err = ", err)
    28. return
    29. }
    30. fmt.Println("读取数据:", r)
    31. // 通过go向redis写入数据string [key-val] 多值
    32. replay, err := conn.Do("mset", "name1", "xiaoming1", "name2", "xiaoming2")
    33. fmt.Println("replay:", replay)
    34. if err != nil {
    35. fmt.Println("Set err = ", err)
    36. return
    37. }
    38. // 通过go向redis读取数据string [key-val] 多值
    39. rs, err := redis.Strings(conn.Do("mGet", "name", "name1"))
    40. if err != nil {
    41. fmt.Println("redis set err = ", err)
    42. return
    43. }
    44. fmt.Println("读取数据:", rs)
    45. // 通过go向redis读取数据string [key-val]
    46. if _, err = redis.String(conn.Do("GETSET", "name", "xiaohong")); err != nil {
    47. fmt.Println("redis set err = ", err)
    48. return
    49. }
    50. // 通过go向redis读取数据string [key-val]
    51. r, err = redis.String(conn.Do("Get", "name"))
    52. if err != nil {
    53. fmt.Println("redis set err = ", err)
    54. return
    55. }
    56. fmt.Println("GETSET读取数据:", r)
    57. if _, err := conn.Do("incr", "namex"); err != nil {
    58. fmt.Println("redis set err = ", err)
    59. return
    60. }
    61. // incrby(自增指定数字)
    62. if _, err := conn.Do("incrby", "namex", 2); err != nil {
    63. fmt.Println("redis set err = ", err)
    64. return
    65. }
    66. count, err := redis.String(conn.Do("Get", "namex"))
    67. if err != nil {
    68. fmt.Println("redis set err = ", err)
    69. return
    70. }
    71. fmt.Println("自增指定数字", count)
    72. // decrby(自减指定数字)
    73. if _, err := conn.Do("decrby", "namex", 2); err != nil {
    74. fmt.Println("redis set err = ", err)
    75. return
    76. }
    77. count, err = redis.String(conn.Do("Get", "namex"))
    78. if err != nil {
    79. fmt.Println("redis set err = ", err)
    80. return
    81. }
    82. fmt.Println("自减指定数字", count)
    83. }
    84. // opHash 哈希
    85. func opHash(conn redis.Conn) {
    86. if _, err := conn.Do("HMSet", "user", "name", "john", "age", 100); err != nil {
    87. fmt.Println("redis hmset err = ", err)
    88. return
    89. }
    90. r1, err := redis.Strings(conn.Do("HMGet", "user", "name", "age"))
    91. if err != nil {
    92. fmt.Println("redis hmget err = ", err)
    93. return
    94. }
    95. for i, v := range r1 {
    96. fmt.Printf("r[%d] = %v \n", i, v)
    97. }
    98. }

    参考文档:

    Go-Redis(二)gopkg-redis基本操作_gopkg.in/redi_Kevin_cai09的博客-CSDN博客

    golang go-redis和redigo的不同用法_go语言 redigo和redis-go_enjoy_sun_moon的博客-CSDN博客

    Redis 命令

  • 相关阅读:
    固定资产管理中净值怎么算
    web前端设计与开发期末作品_期末大作业【使用HTML制作汽车首页】
    Chat2DB下载、以及AI功能使用
    Sklearn机器学习中的主要算法原理以及实现
    测试的意义并不是能找到全部的缺陷
    初识C语言 -- 结构体,分支和循环语句
    completefuture造成的rpc重试事故
    腾讯云4核8G服务器CVM S5性能测评及优惠价格表
    (转)STR 内核做了什么
    【重识云原生】第四章云网络4.7.2节——virtio网络半虚拟化简介
  • 原文地址:https://blog.csdn.net/xwlljn/article/details/133138073
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号