можете подсказать изучаю redis . Через cli добавляю строку . В list показывает cout 1. Теперь вывожу список через Go 0. И если заново зайти в cli то и строка пропала . Код Go
https://play.golang.org/p
-----Данным скриптом кладу данные в Redis
import (
"fmt"
"time"
"github.com/go-redis/redis"
)
var (
client *redis.Client
err error
)
///Структура для Redis
///{"client":"79095876084","dispach":"12548","timeout":"35","addr":"http.yandex.ru","session_id":"31345134"}
type data struct {
Client string `json:"client"`
Dispach string `json:"dispach"`
Timeout string `json:"timeout"`
Addr string `json:"addr"`
Session_id string `json:"session_id"`
Method string `json:"method"`
}
func init() {
client = redis.NewClient(&redis.Options{
Addr: ":6379",
DialTimeout: 10 * time.Second,
ReadTimeout: 30 * time.Second,
WriteTimeout: 30 * time.Second,
PoolSize: 10,
PoolTimeout: 30 * time.Second,
})
client.FlushDB()
}
func redis_connect() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
pong, err := client.Ping().Result()
fmt.Println(pong, err)
if err != nil {fmt.Println("Redis is not Connect")}else {fmt.Println("Redis is Connected")}
// Output: PONG <nil>
}
func main() {
////Подключение к БД Redis
redis_connect()
/*
Получить длину списка
dialer -- буфер на очередь в обзвон
*/
/////Загружаю номер в список
err := client.LPush("dialer","{\"client\":\"79095876084\",\"dispach\":\"12548\",\"timeout\":\"35\",\"addr\":\"http.yandex.ru\",\"session_id\":\"31345134\",\"method\":\"31345134\"}").Err()
if err != nil {
panic(err)
}
err = client.LPush("dialer","{\"client\":\"79094\",\"dispach\":\"12548\",\"timeout\":\"35\",\"addr\":\"http.yandex.ru\",\"session_id\":\"31345134\",\"method\":\"31345134\"}").Err()
if err != nil {
panic(err)
}
err = client.LPush("dialer","{\"client\":\"84\",\"dispach\":\"12548\",\"timeout\":\"35\",\"addr\":\"http.yandex.ru\",\"session_id\":\"31345134\",\"method\":\"31345134\"}").Err()
if err != nil {
panic(err)
}
}
Другим забираю
package main
import (
"fmt"
"time"
"github.com/go-redis/redis"
"encoding/json"
)
var (
client *redis.Client
err error
)
///Структура для Redis
///{"client":"79095876084","dispach":"12548","timeout":"35","addr":"http.yandex.ru","session_id":"31345134"}
type data struct {
Client string `json:"client"`
Dispach string `json:"dispach"`
Timeout string `json:"timeout"`
Addr string `json:"addr"`
Session_id string `json:"session_id"`
Method string `json:"method"`
}
func init() {
fmt.Println("Балансировшик очереди вызовов с Redis + Сокет FreeSWITCH ")
client = redis.NewClient(&redis.Options{
Addr: ":6379",
DialTimeout: 10 * time.Second,
ReadTimeout: 30 * time.Second,
WriteTimeout: 30 * time.Second,
PoolSize: 10,
PoolTimeout: 30 * time.Second,
})
client.FlushDB()
}
func redis_connect() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
pong, err := client.Ping().Result()
fmt.Println(pong, err)
if err != nil {fmt.Println("Redis is not Connect")}else {fmt.Println("Redis is Connected")}
// Output: PONG <nil>
}
func main() {
////Подключение к БД Redis
redis_connect()
/*
Получить длину списка
dialer -- буфер на очередь в обзвон
*/
len_icc , err := client.LLen("dialer").Result()
if err != nil {
panic(err)
}
/*
Либа https://godoc.org/github.com/go-redis/redis#Ring.LLen
https://github.com/go-redis/redis
*/
fmt.Println("Количество строк в Списке Редис по услуге Автоматический обзвон клиентов", len_icc)
int_len := int(len_icc)
///Прохожу все циклом
for i:=0 ; i< int_len ; i++{
i_int64 := int64(i)
value_icc , err := client.LIndex("dialer",i_int64).Bytes()
if err != nil {
panic(err)
}
var icc_list data
////разбираю JSON
err = json.Unmarshal(value_icc, &icc_list)
if err != nil {
fmt.Println("JSON ERR")
return
}
fmt.Println("Адрес куда отправлять ответ ",icc_list.Addr,"Номер клиента",icc_list.Client,"Номер рассылки",icc_list.Dispach,"Timeout",icc_list.Timeout,"Session_ID",icc_list.Session_id,"Method",icc_list.Method)
}
}
Но после того как выполню скрипт который записывает в БД данные и после него сразу стартую скрипт который прверет наличие новых данных то пусто
[root@service2 go]# go run test_redis.go
PONG
Redis is Connected
[root@service2 go]# redis-cli
127.0.0.1:6379> LLEN dialer
(integer) 3
127.0.0.1:6379>
127.0.0.1:6379>
[root@service2 go]# go run raspredelitel.go
Балансировшик очереди вызовов с Redis + Сокет FreeSWITCH
PONG
Redis is Connected
Количество строк в Списке Редис по услуге Автоматический обзвон клиентов 0
Можете подсказать в чем причина того что после записи первым скриптом строк в Radis второй скрипт на извлечение данных их не может взять при том что он даже удаляет записи .
Спасибо