REDIS基础, GO语言
发布时间:2021-05-13 编辑:jiaochengji.com
教程集为您提供REDIS基础, GO语言等资源,欢迎您收藏本站,我们将为您提供最新的REDIS基础, GO语言资源
一安装Redis和Tcl
1.1 redis Linux
[root@kolla ~]# wget http://download.redis.io/releases/redis-3.2.8.tar.gz
[root@kolla ~]# tar -zxvf redis-3.2.8.tar.gz
[root@kolla ~]# mv redis-3.2.8 /usr/local/redis/
[root@kolla ~]# cd /usr/local/redis/
[root@kolla redis]# yum install gcc make -y
[root@kolla redis]# make
安装tcl
[root@kolla redis]# cd
[root@kolla ~]# wget https://jaist.dl.sourceforge.net/project/tcl/Tcl/8.6.1/tcl8.6.1-src.tar.gz
[root@kolla ~]# tar -zxvf tcl8.6.1-src.tar.gz -C /usr/local/
[root@kolla ~]# cd /usr/local/tcl8.6.1/unix/
[root@kolla unix]# ./configure
[root@kolla unix]# make
[root@kolla unix]# make install
[root@kolla unix]# cd /usr/local/redis/
[root@kolla redis]# make test
[root@kolla redis]# make install
[root@kolla redis]# cd /usr/local/bin/
[root@kolla bin]# ls
redis-benchmark redis-check-rdb redis-sentinel tclsh8.6
redis-check-aof redis-cli redis-server
其中
redis-server redis服务器
redis-cli redis命令行客户端
redis-benchmark redis性能测试工具
redis-check-aof AOF文件修复工具
redis-check-rdb RDB文件检索工具
[root@kolla ~]# mkdir -p /etc/redis
[root@kolla ~]# cp /usr/local/redis/redis.conf /etc/redis/
(2)Redis Windows
下载地址
https://github.com/microsoftarchive/redis/releases
下载3.2.100 Redis-x64-3.2.100.zip
解压之后改名字 存放在 C:\redis目录下
输入CMD 启动Redis Server
C:\Users\Administrator>cd C:\redis
C:\redis> redis-server.exe redis.windows.conf
输入CMD启动 Redis Client
C:\redis> redis-cli.exe -h 127.0.0.1 -p 6379
二修改配置文件
[root@kolla ~]# vi /etc/redis/redis.conf
61 #bind 127.0.0.1 //绑定IP:如果需要远程访问,可将此行注释,或绑定一个真实IP
84 port 6379
128 daemonize yes
是否以守护进程运行
a) 如果以守护进程运行, 则不会再命令行阻塞,类似于服务
b) 如果以非守护进程运行, 则当前终端被阻塞
c) 设置为yes表示守护进程, 设置为no表示非守护进程
d) 推荐设置为yes
数据文件
237 dbfilename dump.rdb //做持久化存储,关机的时候内存写入到硬盘,开机硬盘到内存
数据文件存储路径
247 dir /var/lib/redis
日志文件
163 logfile "/var/log/redis/redis-server.log"
数据库,默认有16个 0-15
178 databases 16
主从赋值,类似于双机备份(目前不变动)
265 # slaveof <masterip> <masterport>
-------------------------------------
三 启动服务端和客户端
(1)服务器端开启的命令为redis-server
[root@kolla ~]# redis-server --help
Usage: ./redis-server [/path/to/redis.conf] [options]
./redis-server - (read config from stdin)
./redis-server -v or --version
./redis-server -h or --help
./redis-server --test-memory <megabytes>
Examples:
./redis-server (run the server with default conf)
./redis-server /etc/redis/6379.conf
./redis-server --port 7777
./redis-server --port 7777 --slaveof 127.0.0.1 8888
./redis-server /etc/myredis.conf --loglevel verbose
Sentinel mode:
./redis-server /etc/sentinel.conf --sentinel
[root@kolla ~]#
(2)启动redis服务器端
[root@kolla ~]# ps aux | grep redis
root 2139 0.0 0.0 136980 7952 ? Sl 10:27 0:01 redis-server *:6379
root 2704 0.0 0.0 112716 964 pts/0 S 11:02 0:00 grep --color=auto redis
[root@kolla ~]#
四 String类型操作
[root@kolla ~]# mkdir -p /var/log/redis/
[root@kolla ~]# touch /var/log/redis/redis-server.log
[root@kolla ~]# redis-server /etc/redis/redis.conf
目前,按照这个命令启动
[root@kolla ~]# nohup redis-server &
(3)启动客户端
[root@kolla ~]# redis-cli
#总共16个数据库,0开始,下面代表0号数据库
127.0.0.1:6379>
#下面代表第十号数据库
127.0.0.1:6379> select 10
OK
127.0.0.1:6379[10]>
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> set name1 itcast
OK
127.0.0.1:6379> keys *
1) "name"
2) "name1"
127.0.0.1:6379> get name1
"itcast"
设置过期时间
127.0.0.1:6379> setex b1 3 itaima
OK
127.0.0.1:6379> get b1
"itaima"
127.0.0.1:6379> get b1
(nil)
一次性设置多个值
127.0.0.1:6379> mset a1 go a2 c a3 c a4 python
中文乱码
127.0.0.1:6379> append a1 "很棒"
(integer) 8
127.0.0.1:6379> get a1
"go\xe5\xbe\x88\xe6\xa3\x92"
127.0.0.1:6379> exit
[root@kolla ~]# redis-cli --raw
127.0.0.1:6379> get a1
go很棒
127.0.0.1:6379>
获取多个数值
127.0.0.1:6379> mget a1 a2
go很棒
c
五键有关操作
查找,支持正则表达式
127.0.0.1:6379> keys a*
127.0.0.1:6379> EXISTS a1
1
127.0.0.1:6379> exists a1
1
127.0.0.1:6379>
查看键对应的value类型
127.0.0.1:6379> TYPE a1
string
127.0.0.1:6379>
删除键以及对应的值
127.0.0.1:6379> del a4
1
127.0.0.1:6379> exists a4
0
127.0.0.1:6379>
删除所有键
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
127.0.0.1:6379>
127.0.0.1:6379> mset a1 go a2 c a3 c
OK
127.0.0.1:6379> mget a1 a2 a3
go
c
c
127.0.0.1:6379>
127.0.0.1:6379> del a2 a3
2
127.0.0.1:6379> keys *
a1
127.0.0.1:6379>
重新设置过期时间
127.0.0.1:6379> SETEX name 100 itcast
OK
127.0.0.1:6379> expire name 10
1
127.0.0.1:6379> get name
itcast
127.0.0.1:6379> get name
127.0.0.1:6379>
六 hash类型操作
设置单个属性
127.0.0.1:6379> hset haha name lilei
127.0.0.1:6379> EXISTS haha
127.0.0.1:6379> hmset haha age 11 score 100
127.0.0.1:6379> keys *
haha
127.0.0.1:6379> keys *
haha
a1
127.0.0.1:6379> hkeys haha
name
age
score
127.0.0.1:6379>
127.0.0.1:6379> hget haha name
lilei
127.0.0.1:6379> hmget haha name age
获取所有属性的值
127.0.0.1:6379> hvals haha
删除多个
127.0.0.1:6379> hdel haha age score
七列表
(1)列表的元素类型为string
(2)按照插入顺序排序
在左侧插入数据
127.0.0.1:6379> lpush a1 a b c
127.0.0.1:6379> LRANGE a1 0 2
127.0.0.1:6379> rpush a2 a b c
3
127.0.0.1:6379> lrange a2 0 2
a
b
c
127.0.0.1:6379>
在指定元素前后插入
127.0.0.1:6379> lrange a2 0 2
a
b
c
127.0.0.1:6379> linsert a2 before b 1
4
127.0.0.1:6379> lrange a2 0 3
a
1
b
c
127.0.0.1:6379> linsert a2 after b 2
5
127.0.0.1:6379> lrange a2 0 4
a
1
b
2
c
127.0.0.1:6379>
数值替换,替换第二个b为k
127.0.0.1:6379> LRANGE a2 0 -1
a
1
b
2
c
127.0.0.1:6379> lset a2 2 k
OK
127.0.0.1:6379> LRANGE a2 0 -1
a
1
k
2
c
127.0.0.1:6379>
八集合_set和zset相关操作
8.1 _set无序集合
。无序集合
。元素为string类型
。元素具有唯一性,不重复
。对于集合没有修改操作
增加元素
。添加元素
sadd key member1 member2
向键 'a3'的集合中添加元素'zhangsan', 'list', 'wangwu'
127.0.0.1:6379> sadd a4 zhangsan sili wangwu
127.0.0.1:6379>
。获取
返回所有的元素,获取键'a3'的集合中所有元素
127.0.0.1:6379> smembers a4
sili
wangwu
zhangsan
127.0.0.1:6379>
。删除
删除指定元素
srem key value
127.0.0.1:6379> srem a4 zhangsan
1
127.0.0.1:6379> smembers a4
sili
wangwu
127.0.0.1:6379>
8.2 zset类型(有序集合)
。sorted set有序集合
。元素为string类型
。元素䢹唯一性,不重复
。每个元素都会关联一个double类型的score, 表示权重,通过权重讲元素从小到大排序
说明:没有修改操作
8.2.1增加
127.0.0.1:6379> zadd a5 4 list 6 zhaoliu 3 zhangsan 5 wangwu
获取元素
127.0.0.1:6379> zrange a5 0 -1 按照3 4 5 6进行排序
zhangsan
list
wangwu
zhaoliu
127.0.0.1:6379>
8.2.2返回score值在min和max之间的成员
zrangebyscore key min max
例子:获取键'a4'的集合中权限值在5和6之间的成员
127.0.0.1:6379> zrangebyscore a5 5 6
wangwu
zhaoliu
127.0.0.1:6379>
8.2.3获取返回成员member的score值
zscore key member
获取键'a5'的集合中元素'zhangsan'的权重
zscore a5 zhangsan
127.0.0.1:6379> zscore a5 zhangsan
3
8.2.4删除
删除指定元素
127.0.0.1:6379> zrem a5 zhangsan
127.0.0.1:6379> zrem a5 list wangwu
2
127.0.0.1:6379> zrange a5 0 -1
zhaoliu
127.0.0.1:6379> zrem a5 zhagnsan
0
127.0.0.1:6379> zrange at 0 -1
127.0.0.1:6379> zadd a5 3 zhangsan 4 list 5 wangwu
3
127.0.0.1:6379>
127.0.0.1:6379> zrange a5 0 -1
zhangsan
list
wangwu
zhaoliu
127.0.0.1:6379>
根据权重删除
127.0.0.1:6379> ZREMRANGEBYSCORE a5 4 5
2
127.0.0.1:6379> zrange a5 0 -1
zhangsan
zhaoliu
127.0.0.1:6379>
九GO语言操作redis
[root@kolla ~]# cat redis.go
package main
import (
"fmt"
"github.com/gomodule/redigo/redis"
)
func main() {
//1.连接数据库
conn, _ := redis.Dial("tcp", ":6379")
//3.关闭数据库
defer conn.Close()
//2.操作数据库
conn.Send("set", "name", "chuanzhi")
conn.Send("mset", "age", 11, "score", 100)
conn.Flush()
reply, err := conn.Receive()
if err != nil {
fmt.Println("redis 操作失败")
return
}
fmt.Println("reply = ", reply)
reply, err = conn.Do("set", "sex", "women")
if err != nil {
fmt.Println("redis 操作失败")
return
}
conn.Send("MULTI")
conn.Send("get", "name")
conn.Send("set", "class", "one class")
reply, err = conn.Do("EXEC")
if err != nil {
fmt.Println("redis 操作失败")
return
}
reply, err = redis.String(conn.Do("get", "name"))
if err != nil {
fmt.Println("redis.String")
}
/*
c.Send("SET", "foo", "bar")
c.Send("GET", "foo")
c.Flush() //把缓冲区命令发到服务器
c.Receive() //接收set请求返回的数据
v, err = c.Receive() //接收get请求传输的数据
*/
reply, err = redis.Values(conn.Do("mget, name", "age"))
if err != nil {
fmt.Println("err = ", err)
}
var s string
var i int
redis.Scan(reply, &s, &i)
fmt.Println(s, i)
}
[root@kolla ~]#
到此这篇关于“REDIS基础, GO语言”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!
您可能感兴趣的文章:
REDIS基础, GO语言
2018年最全Go语言教程零基础入门到进阶实战视频
超全的!Redis的安装和基础操作
想系统学习GO语言(Golang
Golang笔记:语法,并发思想,web开发,Go微服务相关
PHP操作Redis数据库常用方法(总结)
PHP操作Redis数据库常用方法
redis基础问答
GO语言零基础从入门到精通视频教程
请问没有任何编程基础,如何学习GO语言?
[关闭]