码农知识堂 - 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 命令

  • 相关阅读:
    git clone后修改文件然后再上传覆盖
    通用串行总线USB接口——基础总结(USB版本演进、接口类型、电气特性、拓扑结构、USB硬件接口实现)
    springboot母婴商城系统的设计与实现(文档+源码)
    Dubbo多协议支持
    Pytorch 最全入门介绍,Pytorch入门看这一篇就够了
    OJ练习第177题——打家劫舍 IV(二分查找)
    逆向学习记录(4)adb
    Redis 的三种部署模式
    dpdk-19.11 中 simd 指令使用现状分析
    储油罐北斗监测方案
  • 原文地址:https://blog.csdn.net/xwlljn/article/details/133138073
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号