Commit Graph

234 Commits

Author SHA1 Message Date
Kailash Nadh f9dfc7a949 Refactor scan signature to work with Slice and StringMap cmds 2021-02-02 16:28:10 +05:30
Kailash Nadh a4144ea98e Add SliceCmd.Scan() (hscan pkg) and tests 2021-02-02 13:04:52 +05:30
Vladimir Mihailenco 380ab17274 Fix cleanup 2021-01-29 12:12:47 +02:00
Vladimir Mihailenco 8926f2992a Cleanup 2021-01-29 12:04:39 +02:00
Kailash Nadh 6f96bebac7 Add redis.Scan() to scan results from redis maps into structs.
The package uses reflection to decode default types (int, string
etc.) from Redis map results (key-value pair sequences) into
struct fields where the fields are matched to Redis keys by tags.

Similar to how `encoding/json` allows custom decoders using
`UnmarshalJSON()`, the package supports decoding of arbitrary
types into struct fields by defining a `Decode(string) error`
function on types.

The field/type spec of every struct that's passed to Scan() is
cached in the package so that subsequent scans avoid iteration
and reflection of the struct's fields.
2021-01-28 18:04:38 +05:30
Vladimir Mihailenco 76fd0eac61 Fix Tx pipeline hook 2021-01-09 09:57:46 +02:00
Vladimir Mihailenco 55a8f1a601
Merge pull request #1567 from go-redis/feature/otel-0.14
Update to otel v0.14
2020-11-21 10:12:54 +02:00
Vladimir Mihailenco 3921cd497c Update to otel v0.14 2020-11-21 09:56:52 +02:00
Mitsuo Heijo f5a1707d3c Update golangci-lint to v1.32 2020-11-17 23:08:15 +09:00
Vladimir Mihailenco 13782c03d0 Tweak otel span and attr names 2020-11-15 14:30:27 +02:00
Vladimir Mihailenco f92951b835 Guard against overflow in retry 2020-10-28 11:12:46 +02:00
Vladimir Mihailenco a6876ad84a Move Scan test 2020-10-13 09:33:12 +03:00
Roman Suvorov f169894120
Fix/issue 1384 (#1529)
Add support for scanning time.TIme
2020-10-13 09:13:43 +03:00
Vladimir Mihailenco e1b0a0bd7e Cleanup readLine 2020-10-10 12:26:21 +03:00
Eelco Cramer 39571ccc56
Improves performance 2020-10-09 15:06:47 +02:00
Eelco Cramer 97bbed8a92
Fixes issue where a buffer larger than 4096
bytes cannot be read
2020-10-09 11:35:14 +02:00
Vladimir Mihailenco 566840fe27 otel: add RemoteAddr 2020-09-28 17:35:49 +03:00
Vladimir Mihailenco 3e42145a26 Remove arg hex encoding 2020-09-24 10:09:09 +03:00
Vladimir Mihailenco 86326c4924 Refactor NewXInfoGroupsCmd 2020-09-23 11:50:31 +03:00
Dimitrij Denissenko 3fc96195a4 Reduce dependency chain 2020-09-17 14:32:08 +01:00
Vladimir Mihailenco ef220d0944 Tweak append arg 2020-09-05 13:17:26 +03:00
Vladimir Mihailenco c357d18624 Faster renew the subscription 2020-09-05 10:56:09 +03:00
Vladimir Mihailenco 6db422f051 Port pool fixes 2020-08-15 15:45:15 +03:00
Vladimir Mihailenco 3fbf7df014 Fix test 2020-07-28 16:26:03 +03:00
Vladimir Mihailenco 0f5d67c102 Fix zero backoff 2020-07-28 16:14:54 +03:00
Vladimir Mihailenco 6e3d4a53c6 Tweak backoff 2020-07-28 15:42:38 +03:00
刘青 8a3f304b25
Log with context to associate all log by traceID (#1413)
* Log with context to associate all log by traceID
2020-07-18 09:04:36 +03:00
Vladimir Mihailenco f2645d373d
Merge pull request #1405 from fishy/atomic-value-last-dial-error
Use atomic.Value instead of lock for ConnPool.lastDialError
2020-07-16 10:41:42 +03:00
Vladimir Mihailenco 38c87c1f84 Fix golangci 2020-07-16 10:01:27 +03:00
Vladimir Mihailenco 14c843ef89 gofumports 2020-07-16 09:52:07 +03:00
Tiger He 62469e4f42
Introduce metrics capture with OpenTelemetry (#1398)
* internal: Add instrumentation

Co-authored-by: reggiemcdonald <regmcdonald95@gmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2020-07-15 12:07:07 +03:00
Yuxuan 'fishy' Wang 4f70db6849 Use atomic.Value instead of lock for ConnPool.lastDialError
This makes the reading and writing of lastDialError from the pool
faster, as atomic.Value is much more lightweight than the mutex.

Note that using error in atomic.Value directly could cause panics,
because errors could have inconsistent types. Thus wrap them with a
simple struct.
2020-07-14 11:25:59 -07:00
Vladimir Mihailenco 8f29d08432 Don't record proto.Nil 2020-07-09 11:00:23 +03:00
Vladimir Mihailenco 1831363467 Add RecordError 2020-07-09 10:39:46 +03:00
Vladimir Mihailenco 64995f9a51 Tweak auto-reloads 2020-06-29 17:51:47 +03:00
Vladimir Mihailenco 0ffefcde98 Use random node to load cluster slots 2020-06-29 17:26:11 +03:00
Vladimir Mihailenco 789ee0484f Remove io.StringWriter 2020-06-12 10:09:32 +03:00
Vladimir Mihailenco 8eed1e67ff Add OpenTelemetryHook 2020-06-09 17:17:41 +03:00
Vladimir Mihailenco 694e518a8c Use Rendezvous in Ring. Thanks @rafaeleyng for initial idea and implementation 2020-06-08 13:22:37 +03:00
Vladimir Mihailenco 4440575966 Merge branch 'v8' 2020-05-21 10:16:44 +03:00
Vladimir Mihailenco a7c11d9699
Merge pull request #1285 from kudrykv/issue-1279
Use an interface for logging
2020-05-21 10:08:11 +03:00
Vladimir Mihailenco 0c500078e5
Merge pull request #1273 from theo-delaune-argus/time-nanoseconds
Store time in RFC3339Nano to keep nanoseconds
2020-05-21 09:39:48 +03:00
Vladimir Mihailenco 07656a01bf Add redis.Error interface and export ErrClosed
Fixes https://github.com/go-redis/redis/issues/1295
Closes https://github.com/go-redis/redis/pull/1296
2020-05-21 09:24:54 +03:00
Vladimir Mihailenco 3031343dae Make cmd.String() faster 2020-05-19 08:52:38 +03:00
Vladimir Mihailenco 2b060bb99d Remove error reporting 2020-05-19 08:52:38 +03:00
Vladimir Mihailenco 66cd13e793 Update otel 2020-05-19 08:52:38 +03:00
Vladimir Mihailenco 3dcb844106 Bump major version 2020-05-19 08:52:38 +03:00
Vladimir Mihailenco f5593121e0 Add ctx as first arg 2020-05-19 08:52:38 +03:00
wanglei6 39881392de code fmt 2020-04-30 17:46:50 +08:00
wanglei6 4d5f8a5df3 fix data race 2020-04-30 14:34:48 +08:00
Vitaliy Kudryk 39272697aa
issue-1279 update logging 2020-03-30 17:02:17 +03:00
theo-delaune-argus fea610f7b4 Store time in RFC3339Nano to keep nanoseconds 2020-03-13 17:48:33 +01:00
Vladimir Mihailenco a2de1fe668 internal/pool: include details when conn is in a bad state 2019-09-13 16:52:05 +03:00
Ou Changkun cb2d1c89e6 internal/pool: exit conn pool fast (#1155)
* internal/pool: exit conn pool reaper fast
2019-09-09 11:50:28 +03:00
Vladimir Mihailenco e694ed0084 Cleanup 2019-08-18 17:11:07 +03:00
Vladimir Mihailenco eaeb8f2a08 internal: return an error on setting deadline 2019-08-16 17:50:57 +03:00
Vladimir Mihailenco e269de20cf internal/proto: use strict ReadLine 2019-08-14 11:14:50 +03:00
Vladimir Mihailenco 61e0d1d527 internal/proto: util util.Atoi 2019-08-14 10:24:13 +03:00
Vladimir Mihailenco 4d3ed95bd9 Add conn health check 2019-08-09 15:11:52 +03:00
Vladimir Mihailenco 7779accbea Use semantic import versioning 2019-08-08 14:29:44 +03:00
Vladimir Mihailenco 87225c1cf9 malign struct fields 2019-08-08 14:22:01 +03:00
Vladimir Mihailenco e0fed4d581 Remove atomic.Value.Store(nil) 2019-08-08 14:04:19 +03:00
Vladimir Mihailenco 2927e15b6b Retry BadConnError 2019-08-08 11:44:55 +03:00
Vladimir Mihailenco 27f3b27893 Fix names 2019-08-07 16:12:01 +03:00
Vladimir Mihailenco 4e9cea8876 Add proper SingleConnPool implementation 2019-08-03 17:31:28 +03:00
Patrick White efa4a78883 Close single conn connection pool 2019-08-01 14:59:53 -07:00
Vladimir Mihailenco c837612911 Cancel sleep when context is cancelled 2019-07-30 12:13:00 +03:00
Vladimir Mihailenco 6d8db67ef5 Cleanup 2019-07-28 10:53:40 +03:00
waterandair 6cd6cd828f protect pollSize and idleConnsLen with mutex (#1105)
Fix poolSize and idleConnsLen when conn can't be created
2019-07-28 09:56:57 +03:00
Vladimir Mihailenco f3ce3362a0 Add golangci-lint 2019-07-25 14:36:50 +03:00
Vladimir Mihailenco 0e7fb3b12d Marshal time as RFC3339. Add StringCmd.Time helper. 2019-07-25 13:03:09 +03:00
Vladimir Mihailenco 2cbb5194fb Fix WithContext and add tests 2019-07-04 11:57:54 +03:00
Vladimir Mihailenco 717362d3e9 Inc StaleConns in ReapStaleConns 2019-06-24 15:27:03 +03:00
Vladimir Mihailenco 7a300ac6eb
Merge pull request #1060 from go-redis/fix/cleanup-code
Cleanup
2019-06-17 13:04:50 +03:00
Vladimir Mihailenco 3bdf64784a Cleanup 2019-06-17 12:32:40 +03:00
Vladimir Mihailenco 246d502457 Don't panic if multi bulk parser is nil 2019-06-16 14:06:13 +03:00
Vladimir Mihailenco aa5f492665 internal/pool: cleanup 2019-06-15 10:34:38 +03:00
Vladimir Mihailenco 880e05d975 Cleanup 2019-06-14 16:00:03 +03:00
Vladimir Mihailenco c0e70ad31d internal/pool: use min nonzero deadline 2019-06-14 14:50:58 +03:00
Vladimir Mihailenco f8704e4b6b Cleanup 2019-06-09 12:29:23 +03:00
Vladimir Mihailenco 35932b7961 Check context.Done while waiting for a connection 2019-06-08 15:36:00 +03:00
Vladimir Mihailenco 5460bc10f2 Use Context.Deadline to set net.Conn deadline 2019-06-08 15:02:51 +03:00
Vladimir Mihailenco 53c8a4a6b7 Pass context to Dialer 2019-06-04 14:26:26 +03:00
Vladimir Mihailenco 6c72dc807e internal/pool: replace atomic.Value with int64 2019-06-01 11:32:05 +03:00
Vladimir Mihailenco b706478fdc Fix MinIdleConns and MaxConnAge 2019-03-25 13:02:31 +02:00
Vladimir Mihailenco ac9e1abf54 Retry master node on readonly errors. Fixes #977 2019-02-27 12:53:44 +02:00
WANG QIANG d040650021 Remove SingleFlight package 2019-01-08 17:15:24 +08:00
Vladimir Mihailenco fa76dd0e87 Add releaseConnStrict 2018-10-14 11:27:34 +03:00
Andrii Kushch f5d67d80d3 remove unused function 2018-10-11 12:55:35 +02:00
Vladimir Mihailenco 8d3747808e internal: retry timeout 2018-08-23 16:13:42 +03:00
Vladimir Mihailenco 0197108027 Use bufio.Writer 2018-08-17 14:14:02 +03:00
Vladimir Mihailenco 00de347403 Optimize reading big values 2018-08-16 14:01:03 +03:00
Vladimir Mihailenco 5146fb0c57 Cleanup buffers manipulation 2018-08-15 11:53:15 +03:00
Vladimir Mihailenco 7c26d1ceb6 Pass cn.Rd where possible 2018-08-15 09:38:58 +03:00
Vladimir Mihailenco cfe305296f Bench bigget values 2018-08-15 09:10:53 +03:00
Vladimir Mihailenco 8ebf0b7750 Remove unused code 2018-08-13 09:52:36 +03:00
Vladimir Mihailenco 651e9fef1d Add MaxConnAge 2018-08-12 10:25:16 +03:00
Vladimir Mihailenco 25bf3e79e5 Add MinIdleConns 2018-08-12 08:34:06 +03:00
Vladimir Mihailenco fee18a3d42 Use sub-benchmarks 2018-08-10 14:08:07 +03:00
Vladimir Mihailenco e753829945 internal/proto: avoid moving data when buffer is big enough 2018-08-07 14:49:35 +03:00