Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张磊
/
FileStorageBeego
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
174298b4
authored
2013-07-04 13:02:11 +0800
by
astaxie
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
fix cache's bug expird is not changed by get method
1 parent
9b392a06
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
21 additions
and
23 deletions
cache/cache.go
cache/cache_test.go
cache/memcache.go
cache/memory.go
cache/redis.go
cache/cache.go
View file @
174298b
...
...
@@ -6,7 +6,7 @@ import (
type
Cache
interface
{
Get
(
key
string
)
interface
{}
Put
(
key
string
,
val
interface
{},
timeout
int
)
error
Put
(
key
string
,
val
interface
{},
timeout
int
64
)
error
Delete
(
key
string
)
error
IsExist
(
key
string
)
bool
ClearAll
()
error
...
...
cache/cache_test.go
View file @
174298b
...
...
@@ -6,7 +6,7 @@ import (
)
func
Test_cache
(
t
*
testing
.
T
)
{
bm
,
err
:=
NewCache
(
"memory"
,
`{"interval":
6
0}`
)
bm
,
err
:=
NewCache
(
"memory"
,
`{"interval":
2
0}`
)
if
err
!=
nil
{
t
.
Error
(
"init err"
)
}
...
...
@@ -21,7 +21,7 @@ func Test_cache(t *testing.T) {
t
.
Error
(
"get err"
)
}
time
.
Sleep
(
7
0
*
time
.
Second
)
time
.
Sleep
(
3
0
*
time
.
Second
)
if
bm
.
IsExist
(
"astaxie"
)
{
t
.
Error
(
"check err"
)
...
...
cache/memcache.go
View file @
174298b
...
...
@@ -28,7 +28,7 @@ func (rc *MemcacheCache) Get(key string) interface{} {
return
contain
}
func
(
rc
*
MemcacheCache
)
Put
(
key
string
,
val
interface
{},
timeout
int
)
error
{
func
(
rc
*
MemcacheCache
)
Put
(
key
string
,
val
interface
{},
timeout
int
64
)
error
{
if
rc
.
c
==
nil
{
rc
.
c
=
rc
.
connectInit
()
}
...
...
cache/memory.go
View file @
174298b
...
...
@@ -4,7 +4,6 @@ import (
"encoding/json"
"errors"
"fmt"
"strconv"
"sync"
"time"
)
...
...
@@ -16,12 +15,7 @@ var (
type
MemoryItem
struct
{
val
interface
{}
Lastaccess
time
.
Time
expired
int
}
func
(
itm
*
MemoryItem
)
Access
()
interface
{}
{
itm
.
Lastaccess
=
time
.
Now
()
return
itm
.
val
expired
int64
}
type
MemoryCache
struct
{
...
...
@@ -44,13 +38,21 @@ func (bc *MemoryCache) Get(name string) interface{} {
if
!
ok
{
return
nil
}
return
itm
.
Access
()
if
(
time
.
Now
()
.
Unix
()
-
itm
.
Lastaccess
.
Unix
())
>
itm
.
expired
{
go
bc
.
Delete
(
name
)
return
nil
}
return
itm
.
val
}
func
(
bc
*
MemoryCache
)
Put
(
name
string
,
value
interface
{},
expired
int
)
error
{
func
(
bc
*
MemoryCache
)
Put
(
name
string
,
value
interface
{},
expired
int
64
)
error
{
bc
.
lock
.
Lock
()
defer
bc
.
lock
.
Unlock
()
t
:=
MemoryItem
{
val
:
value
,
Lastaccess
:
time
.
Now
(),
expired
:
expired
}
t
:=
MemoryItem
{
val
:
value
,
Lastaccess
:
time
.
Now
(),
expired
:
expired
,
}
if
_
,
ok
:=
bc
.
items
[
name
];
ok
{
return
errors
.
New
(
"the key is exist"
)
}
else
{
...
...
@@ -91,7 +93,7 @@ func (bc *MemoryCache) ClearAll() error {
func
(
bc
*
MemoryCache
)
StartAndGC
(
config
string
)
error
{
var
cf
map
[
string
]
int
json
.
Unmarshal
([]
byte
(
config
),
&
cf
)
if
_
,
ok
:=
cf
[
"
every
"
];
!
ok
{
if
_
,
ok
:=
cf
[
"
interval
"
];
!
ok
{
cf
=
make
(
map
[
string
]
int
)
cf
[
"interval"
]
=
DefaultEvery
}
...
...
@@ -110,7 +112,7 @@ func (bc *MemoryCache) vaccuum() {
return
}
for
{
<-
time
.
After
(
time
.
Duration
(
bc
.
dur
)
*
time
.
Second
)
<-
time
.
After
(
bc
.
dur
)
if
bc
.
items
==
nil
{
return
}
...
...
@@ -128,12 +130,8 @@ func (bc *MemoryCache) item_expired(name string) bool {
if
!
ok
{
return
true
}
dur
:=
time
.
Now
()
.
Sub
(
itm
.
Lastaccess
)
sec
,
err
:=
strconv
.
Atoi
(
fmt
.
Sprintf
(
"%0.0f"
,
dur
.
Seconds
()))
if
err
!=
nil
{
delete
(
bc
.
items
,
name
)
return
true
}
else
if
sec
>=
itm
.
expired
{
sec
:=
time
.
Now
()
.
Unix
()
-
itm
.
Lastaccess
.
Unix
()
if
sec
>=
itm
.
expired
{
delete
(
bc
.
items
,
name
)
return
true
}
...
...
cache/redis.go
View file @
174298b
...
...
@@ -31,7 +31,7 @@ func (rc *RedisCache) Get(key string) interface{} {
return
v
}
func
(
rc
*
RedisCache
)
Put
(
key
string
,
val
interface
{},
timeout
int
)
error
{
func
(
rc
*
RedisCache
)
Put
(
key
string
,
val
interface
{},
timeout
int
64
)
error
{
if
rc
.
c
==
nil
{
rc
.
c
=
rc
.
connectInit
()
}
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment