在使用连接redis时遇到了一些问题。容许我从头讲起
第三方开源库
go get -v github.com/garyburd/redigo/redis
使用时导入SDK包
操作使用Redis
func main() {
//func Dial(network, address string, options ...DialOption)
// 连接方式: tcp 地址:本机ip+端口号
conn, err := redis.Dial("tcp", ":6379")
//认证redis
_, err = conn.Do("AUTH", "123456")
if err != nil {
conn.Close()
}
fmt.Println("success")
s, err := redis.String(conn.Do("get", "key1"))
fmt.Println(s)
//类型断言接口
r, err := redis.Int(conn.Do("Get", "key1"))
if err != nil {
fmt.Println(err)
}
fmt.Println(r)
//延时关闭
conn.Close()
}
此时提示报错信息
说明原因:
其实一开始我也没有注意到自己的代码究竟是哪里错了,知道后面,我查看了一下关于Redis的认证问题,发现在个人自己刚刚下完Redis,并且使用go进行连接和使用时,是不需要这个安全认证的,因为自己还未进行设置安全认证(我之所以之前加这个安全认证,也是因为看的GO连接Redis的一篇博客,看着人家加了,然后自己也加了,但是却没有跑通) ,所以导致安全认证失败,无法正常使用Redis。
解决方式:
将Redis的安全认证代码注释掉即可。
func main() {
//func Dial(network, address string, options ...DialOption)
// 连接方式: tcp 地址:本机ip+端口号
conn, err := redis.Dial("tcp", ":6379")
/* //认证redis
_, err = conn.Do("AUTH", "123456")
if err != nil {
conn.Close()
}*/
fmt.Println("success")
s, err := redis.String(conn.Do("get", "key1"))
fmt.Println(s)
//类型断言接口
r, err := redis.Int(conn.Do("Get", "key1"))
if err != nil {
fmt.Println(err)
}
fmt.Println(r)
//延时关闭
conn.Close()
}
PS:
关于Redis的安全认证:
Redis数据库的默认打开方式为无密码打开,现在要将其设置为以密码形式打开。
第一种方式:Redis文件夹内容
1、修改配置文件
在redis.windows.conf文件中设置密码的命令中添加requirepass 123456一行,将Redis数据库的密码设置为123456
2、运行redis-server.exe程序
3、双击运行redis-cli.exe程序
4、输入 config get requirepass 命令
回车后,显示空字符串
5、输入auth “123456”命令
显示error
6、用带参数(配置文件)的形式运行redis-server.exe程序
创建一个bat文件,文件内容如下:
@echo offtitle rediscd /d D:\Program Files\Redis-x64-3.2.100redis-server.exe redis.windows.conf
其中D:\Program Files\Redis-x64-3.2.100为redis的安装路径。
7、输入auth “123456”命令
显示OK
8、输入config get requirepass
显示密码
第二种方式:
打开redis.conf,找到requirepass所在的地方,修改为指定的密码,再去掉前面的#号注释符,然后重启redis即可。
注意:密码为明文的,所以我们要保证redis.conf文件的权限以保证更加安全。
设置成功后,现在我们操作redis就需要密码了。
不输入密码也可以进入,但是当对key进行操作的时候,就会提示“(error) ERR operation not
permitted”,此时输入auth reson(reson为我设置的密码)就可以操作了,如下图所示: