MCPcopy Create free account
hub / github.com/dbProjectRED/redimo.go / SINTER

Method SINTER

sets.go:105–141  ·  view source on GitHub ↗
(key string, otherKeys ...string)

Source from the content-addressed store, hash-verified

103}
104
105func (c Client) SINTER(key string, otherKeys ...string) (members []string, err error) {
106 memberSet := make(map[string]struct{})
107 startingList, err := c.SMEMBERS(key)
108
109 if err != nil {
110 return
111 }
112
113 for _, member := range startingList {
114 memberSet[member] = struct{}{}
115 }
116
117 for _, otherKey := range otherKeys {
118 otherList, err := c.SMEMBERS(otherKey)
119 if err != nil {
120 return members, err
121 }
122
123 otherSet := make(map[string]struct{})
124
125 for _, member := range otherList {
126 otherSet[member] = struct{}{}
127 }
128
129 for member := range memberSet {
130 if _, ok := otherSet[member]; !ok {
131 delete(memberSet, member)
132 }
133 }
134 }
135
136 for member := range memberSet {
137 members = append(members, member)
138 }
139
140 return
141}
142
143func (c Client) SINTERSTORE(destinationKey string, sourceKey string, otherKeys ...string) (count int64, err error) {
144 members, err := c.SINTER(sourceKey, otherKeys...)

Callers 2

SINTERSTOREMethod · 0.95
TestSetOperationsFunction · 0.80

Calls 1

SMEMBERSMethod · 0.95

Tested by 1

TestSetOperationsFunction · 0.64