启动Redis
# redis-cli -v //查看版本
# redis-server & //启动服务 &=后台运行
# 建议配置文件启动 redis-server /usr/local/redis/
# redis-cli shutdown 停止服务
# redis-server --port 6380 //指定端口 默认为6379
基本操作
# redis-cli
>keys * //查看所有键
>dbsize //键总数
>exists 键值 //查看键是否存在(1存在 0不存在)
>set hello word 设置键hello 值为word
>del hello 删除
>get hello 获取
>mset a 1 b 2 c 3 批量设置
>mget a b c 批量获取
>set hello zkc xx 修改已经存在的hello 为zkc
>incr 是数值的键 每次加1
>append hello zkc 值 追加zkc
>strlen hello 查看字符串长度
>getset hello redis 设置并返回原值
>getrange hello 0 b 字符位置以0开始计数 将hello的键值第一个字符改为b
>getrange hello 0 1 获取hello键值的 第1和2位字符
哈希 (hset key field value)
>hset user:1 name tom 设置
>hget user:1 name tom 获取
>hdel user:1 name 删除
>hlen user:1 计算field个数
>hmset user:1 name tome age 12 批量设置
>hexists user:1 name 判断是否存在
>hkeys user:1 获取所有field
>hvals user:1 获取所有value
>hgetall user:1 获取所有field+value
>hmset hashkey f1 v1 f2 v2
>object encoding hashkey
查看内部编码 field个数小 ziplist
当value大于64字节或者field个数超过512 内部编码会变成hashtable
列表
添加
> rpush listkey c b a 从右往左插入元素
> lpush list1 c b a 从左往右插入元素
> lrange listkey 0 -1 从左往右获取列表所有元素
> linsert listkey before b java b前面插入java
> linsert listkey after b java b后面插入java
查
> lrange listkey 0 -1 从左往右获取列表所有元素 (0为第一位 -1为最后一位)
> lrange listkey 0 2 从左往右获取列表 第1位到第3位元素
> lindex listkey -1 获取列表下最后一位的元素(指定索引下标的元素)
> llen listkey 获取列表长度
删除
> lpop listkey 删除左侧
> rpop listkey 删除右侧
> lrem listkey 4 a 从左往右删除4个a
> ltrim listkey 1 3 只保留第2位到第4位的元素
修改
> lset listkey 2 pyhton 第三位改成python
阻塞
> brpop list:test 3 (timeout=3 客户端3秒后返回)
> brpop list:test 0 (会一直阻塞)
> blpop (用法一样方向不同)
集合
集合内操作
1添加元素
> sadd key a b c
返回3 添加了3个元素
2删除
> srem key a b ca
3计算元素个数
> scard key
4判断元素在集合内否 在返回1 不在返回0
>sismember key c
5随机从集合中返回指定个数元素
> srandmember key 2
6从集合中随机弹出删除一个元素
> spop key
> smembers key 查看元素已经没有刚刚弹出的
7获取所有元素
> smembers key
集合间操作
求多个集合的交集
sinter key key
求多个集合的并集
synion key key
求多个集合的差集
sdiff key key
将交集,并集,差集的结果保存
sinterstore destination key key
sunionstore destination key key
sdiffstore destination key key
内部编码
1内部元素个数较少为整数时,内部编码为 intset
> object encoding key 查看内部编码
2当元素超过512个 内部编码变为 hashtable
> object encoding key
给用户添加标签 sadd user:1:tags tag1 tag2
删除 srem user:1:tags tag1 tag2
给标签添加用户 sadd tag1:users user:1 user:3
删除 srem tag1:users user:1
有序集合
添加成员
zadd key 100 tom 添加用户tom 和他的分数100
计算成员个数
zcard key
计算成员排名 (从0开始计算)
zrank key 低到高
zrevrank key 高到低
删除成员
zrem key tom
增加成员分数
zincrby key 9 tom
指定排名范围的成员
zrange key 0 2 withscores 低到高 1-3名 加withscores会返回分数
zrevrange key 0 2 withscores 高到低
指定分数范围的成员 (200 +inf 无限大
zrangebyscore key 200 220 withscores 200-220分的从低到高
zrevrangebyscore 高到低
指定分数范围的个数
zcount key 200 220
删除指定分数的成员
zremrangeebyscore key 200 220
zremrangeebyscore key (250 +inf 删除250分以上的人
事务
> multi 开始
> ...N条操作
> exec 结束 (可以用discard代替exec)