Redis有序集合Sorted Sets说明

Redis Sorted-Set

zadd

ZADD key score member [score member ...]
e.g.
    zadd myzset 1 one
# zrange myzset 0 -1 withscores

zrem

ZREM key member [member ...]
e.g.
    zrem myzset one

zrange

ZRANGE key start stop [WITHSCORES]
e.g.
    zrange myzset 0 -1 withscores

zrevrange

ZREVRANGE key start stop [WITHSCORES]
返回名称为key的zset(按score从大到小排序)中的index从start到end的所有元素

zincrby

ZINCRBY key increment member
如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
e.g.
    zincrby key 3 one
    zincrby key 1 five
    127.0.0.1:6379[8]> ZRANGE myzset 0 -1 withscores
     1) "five"
     2) "1"
     3) "two"
     4) "2"
     5) "three"
     6) "3"
     7) "one"
     8) "4"
     9) "four"
    10) "7"

zrank

ZRANK key member
返回名称为key的zset中member元素的排名(按score从小到大排序)即下标
e.g.
    127.0.0.1:6379[8]> ZRANGE myzset 0 -1 withscores
     1) "five"
     2) "1"
     3) "two"
     4) "2"
     5) "three"
     6) "3"
     7) "one"
     8) "4"
     9) "four"
    10) "7"
    127.0.0.1:6379[8]> zrank myzset five
    (integer) 0
    127.0.0.1:6379[8]> zrank myzset one
    (integer) 3

zrevrank

ZREVRANK key member
返回名称为key的zset中member元素的排名(按score从大到小排序)即下标

zrangebyscore

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
e.g.
    zrangebysocre myzset 2 4 withscores

zcount

ZCOUNT key min max
返回集合中score在给定区间的数量
e.g.
    zcount key

zcard

集合个数
ZCARD key

zscore

返回给定元素对应的score
ZSCORE key member

zremrangebyrank

zremrangebyscore


公众号: DailyJobOps DailyJobOps

Redis集合Sets说明

Redis Sets

## SADD -- add item into set
    SADD myset "James"
    # if success, return 1, else return 0

## SMEMBERS -- check members in set
    SMEMBERS myset

## SREM -- delete members from set
    SREM myset "Harry"
    # if delete, return 1, else return 0, e.g. delete an un-exist member

## SPOP -- return and delete one key by random in set
    SPOP myset

## SDIFF -- 返回所有给定的key与第一个key的差集
    SDIFF set1 set2
    # return member only in set1 and not in set2

## SDIFFSTORE -- 返回所有给定的key与第一个key的差集, 并将结果保存为另一个key
    SDIFFSTORE result-set set1 set2
    SMEMBERS result-set

## SINTER -- 返回所有给定的key的交集
    SINTER set1 set2 [set3 ... setN]

## SINTERSTORE -- 交集结果保存为另一个set
    SINTERSTORE result-set set1 set2 [set3 ... setN]

## SUNION -- 并集
    SUNION set1 set2 [set3 ... setN]

## SUNIONSTORE -- 并集结果保存到另一个set
    SUNIONSTORE result-set set1 set2 [set3 ... setN]

## SMOVE -- 从第一个key对应的set中移除member并添加到第二个对应set中
    SMOVE first-set result-set member-name
        127.0.0.1:6379[8]> SMEMBERS t_num2
        1) "five"
        2) "three"
        3) "one"
        127.0.0.1:6379[8]> SMOVE t_num2 t_num4 five
        (integer) 1
        127.0.0.1:6379[8]> SMEMBERS t_num2
        1) "three"
        2) "one"
        127.0.0.1:6379[8]> SMEMBERS t_num4
        1) "five"
## SCARD -- return number of the set
    SCARD myset

## SINMEMBER -- test if member is in set
    SINMEMBER myset member-name

## SRANDMEMBER -- 随机返回名称为key的set的一个元素,但是不删除元素
    SRANDMEMBER myset

公众号: DailyJobOps DailyJobOps

centos7下Redis安装

Prodution

Redis is an open source, BSD licensed, advanced key-value cache and store. 
It is often referred to as a data structure server since keys can contain strings, hashes, 
lists, sets, sorted sets, bitmaps and hyperloglogs.

Preparation

## check if install gcc gcc-c++ make tcl(for make test)
rpm -qa|egrep 'gcc|make|tcl'
## if not ,please install first 
## yum install -y gcc gcc-c++ make tcl

Installation

# you can install one certain version or new stable version 
# wget http://download.redis.io/releases/redis-2.8.13.tar.gz
wget http://download.redis.io/redis-stable.tar.gz

# untar and make 
tar -zxf redis-stable.tar.gz
cd redis-stable
make
# make install
cd src && make install
# make test
make test 
    ... ...
    \o/ All tests passed without errors!
    Cleanup: may take some time... OK

Configuration

# create redis home folder 
mkdir /usr/local/redis/{bin,log,var,conf}
# copy binary file 
cp redis-server redis-sentinel redis-cli redis-benchmark redis-check-dump redis-check-aof /usr/local/redis/bin
# configure
vim /usr/local/redis/conf/redis.conf
    daemonize yes
    port 6379
    timeout 300

    ## database 
    databases 16
    maxmemory 1g

    ## log 
    loglevel warning
    pidfile /usr/local/redis/log/redis.pid
    logfile /usr/local/redis/log/redis.log
    
    ## persistence
    dir /usr/local/redis/var
    save 900 1
    save 300 10
    save 60 10000
    rdbcompression yes
    rdbchecksum    yes
    dbfilename dump.rdb

Start

# you can also add below to /etc/profile
export PATH=$PATH:/usr/local/redis/bin 
redis-server /usr/local/redis/conf/redis.conf 
# check if start 
[root@localtest src]# ps -ef|grep redis
root     31567     1  0 17:29 ?        00:00:00 redis-server *:6379                          
root     31571 23704  0 17:29 pts/1    00:00:00 grep redis
# enter and test 
[root@localtest src]# redis-cli 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name Colin
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> get name
"Colin"
127.0.0.1:6379> 

Maybe have errors

# Error 1
make[2]: cc: Command not found
fix : yum install -y gcc gcc-c++

# Error 2
zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory
fix : clean old compile files 
make distclean  && make

# Error 3
couldn't execute "tclsh8.5": no such file or directory
fix : yum install -y tcl 

公众号: DailyJobOps DailyJobOps