File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed
Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change @@ -822,3 +822,41 @@ func (db *RedisDB) HllMerge(destKey string, sourceKeys ...string) error {
822822func (m * Miniredis ) Copy (srcDB int , src string , destDB int , dest string ) error {
823823 return m .copy (m .DB (srcDB ), src , m .DB (destDB ), dest )
824824}
825+
826+ func (m * Miniredis ) SCard (key string ) (int , error ) {
827+ return m .DB (m .selectedDB ).SCard (key )
828+ }
829+
830+ func (db * RedisDB ) SCard (key string ) (int , error ) {
831+ db .master .Lock ()
832+ defer db .master .Unlock ()
833+ if ! db .exists (key ) {
834+ return 0 , nil
835+ }
836+ if db .t (key ) != "set" {
837+ return 0 , ErrWrongType
838+ }
839+ return len (db .setMembers (key )), nil
840+ }
841+
842+ // return "" if there were no members
843+ func (m * Miniredis ) SRandMember (key string ) (string , error ) {
844+ return m .DB (m .selectedDB ).SRandMember (key )
845+ }
846+
847+ func (db * RedisDB ) SRandMember (key string ) (string , error ) {
848+ db .master .Lock ()
849+ defer db .master .Unlock ()
850+ if ! db .exists (key ) {
851+ return "" , nil
852+ }
853+ if db .t (key ) != "set" {
854+ return "" , ErrWrongType
855+ }
856+ members := db .setMembers (key )
857+ if len (members ) == 0 {
858+ return "" , nil
859+ }
860+ db .master .shuffle (members )
861+ return members [0 ], nil
862+ }
You can’t perform that action at this time.
0 commit comments