redis-server
```
redis-6.0.4 sxs$ ./bin/redis-server ./etc/redis.conf
./bin/redis-cli --raw(避免中文乱码)
tail -f log-redis.log
```
**五种数据类型:**
string:`set/get key value`
hash:`HMSET name field1 'value1' field2 'value2`,`HGET name field1`;
list:`lpush name value`,`lrange name 0 10`;
set:`sadd/smembers name value`,添加两次,自动忽略;
zset:`zadd key score(可重复,用来排序) member` ,`ZRANGEBYSCORE key 0 1000`(有序集合);
##### string常用方法:
1. set/get
2. setnx 如果key存在 不覆盖
3. setex 指定有效期 `setex key seconds value`
4. setrange 设置子字符串 `setrange key 位置 替换内容(没有原内容长,空余位置将保留原内容)`
5. getrange 获取子字符串`getrange key 0 5`前6
6. mset/mget 一次设置/获取多个 all success or all error `mset key val key1 val1`
7. msetnx 不覆盖已存在 not exist
8. getset 设置key值并返回old value `getset key newvalue`
10. incr/decr 对key自增/自减 返回新值
11. incrby/decrby 对value加指定的值,若key不存在 设置value为0 并增加值
12. append 追加value 返回长度
13. strlen 获取value长度
##### hashs
1. hset/hget
2. hsetnx
3. hmset/hmget
4. hincrby 某个字段增加值
5. hexists 判断hash表某个key是否存在
6. hlen返回hash表key数量
7. hdel 删除表的某个键值对
8. hkeys/hvals 返回表中所有key/value
9. hgetall 表中所有key/value
##### lists
1. lpush/rpush 首尾添加元素
2. lrange显示list内容 `lrange 0 -1`显示全部
3. linsert key对应的list`linsert mylist before one myvalue`
4. lset设置list指定下标元素值`lset mylist index value`
5. lrem从key对应的list中删除n个value相同的元素 返回影响元素的个数,n<0 从尾部删除,n=0 全删除`lrem mylist count 'value'`
6. ltrim保留指定范围内数据 `ltrim mylist 0 3`返回ok
7. lpop/rpop 首部删除 尾部弹出 返回该元素
8. rpoplpush从list1尾部弹出并添加list2头部`rpoplpush list1 list2`
9. lindex返回list位置的元素 `lindex mylist 3`
10. llen 返回list元素个数
##### sets
1. setadd/smembers 添加/查看所有
2. srem 删除集合中一个元素 `srem myset two`
3. spop 随机返回并删除一个元素 `spop myset`
4. sdiff 返回与第一个set差集 `sdiff set1 set2`
5. sdiffstore 比较差集并储存另一个集合中`sdiffstore newset set1 set2`
6. sinter 返回所有给定集合交集`sinter set1 set2`
7. sinterstore 同5
8. sunion 并集
9. sunionstore 同5 返回个数
10. smove set1元素移动到set2 `smove set1 set2 'value'`
11. scard 返回集合元素个数
12. sismember测试元素是否在集合中 0不存在 大于0存在 `sismember set1 'value'`
13. srandmember 随机返回集合元素
##### zset
1. zadd `zadd key score menber`
2. zrange 取出`zrange myset 0 -1 withscores//显示序号 by index`
3. zrem删除名称为key的zset中的元素menber`zrem myset member`
4. zincrby修改元素排序,不存在则添加,且score为增加值 `zincrby myset score itim`
5. zrank/zrevrank 返回元素在集合中排序位置/逆顺序(大到小)`rank myset itim`
6. zrevrange 返回逆序 索引start 到end所有元素`zrevrange myset 0 -1`
7. zrangebyscore 根据排序索引的score返回元素 `zrangebyscore myset 1 3 withscores`
8. zcount 返回集合中给定区间的数量`zcount myset 2 4`//集合中2-4索引元素的个数
9. zcard 返回集合中所有元素个数
10. zremrangebyrank 删除集合中排序在给定区间的所有元素 按索引删除`zremrangebyrank myset 2 4`
11. zrenrangebyscore 删除集合中给定排序区间的元素 按顺序删除 `zremrangebyscore myset 2 4`