一.各种命令
1.查询命令
命令 | 解释 | 返回 |
keys * | 查询所有的数据 | |
exists k1 | 查找k1 是否存在 | (integer) 0 0代表失败 1代表查找到 |
type k1 | 查询k1是什么类型 | 返回类型 |
get k1 | 查看 k 1 里面的内容 | hahaahha" |
ttl k1 | 查看什么时候过期 ( -1 永不过期 否则返回过期秒) | 3 |
getrange k1 0 4 | 查询前4个字符串相对于字符串截取 | "12312" |
getset k1 哈哈 | 先把get弹出来 在设置set的值 | 11 |
2.添加命令
命令 | 解释 | 返回 |
set k1 | 添加一个名字为 k1 的set | |
3.修改命令
命令 | 解释 | 返回 |
EXPIRE k1 5 | 设置 5秒之后过期 | |
setrange k1 1 kkee | 修改k1 中 从1 开始的后面4个字符为 kkee | "1kkee3123123" |
incr k3 3 | 让k3 自增 3 | (integer) 101 |
decr k3 3 | 让k3自减 | |
4.删除命令
命令 | 解释 | 返回 |
del k1 | 删除 k1 | 0/1 |
UNILINK k2 | 非阻塞删除 | |
2.其他组合命令
1.String类型操作
1.自增自减
set k3 100 incr k3 3 让k3自增3 decr k3 3 让k3自减
2.获取字符串长度 向字符串追加
strlen k3 获取字符串长度 append k3 aaaa 往k3后面添加aaaa
3.分布式锁
2.list操作
1.左添加和右添加
127.0.0.1:6379> lpush list1 1 2 3 4 5 //往左边添加 (integer) 5 127.0.0.1:6379> rpush list2 11 22 33 44 55 //往右边添加 (integer) 5 127.0.0.1:6379> lrange 0 -1 (error) ERR wrong number of arguments for 'lrange' command 127.0.0.1:6379> lrange list1 0 -1 //查询当前集合list1 左边插入里面所有的值 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 127.0.0.1:6379> lrange list2 0 -1 //查询当前集合list2 右边插入里面所有的值 1) "11" 2) "22" 3) "33" 4) "44" 5) "55"
2.左删除和右删除
127.0.0.1:6379> lpop list1 //弹出最左边的元素 "5" 127.0.0.1:6379> lrange list1 0 -1 //查看 1) "4" 2) "3" 3) "2" 4) "1" 5) "3" 6) "2" 7) "1" 127.0.0.1:6379> rpop list1 //弹出最右边的元素 "1" 127.0.0.1:6379> lrange list1 0 -1 1) "4" 2) "3" 3) "2" 4) "1" 5) "3" 6) "2"
3.查询有多少个元素,删除区间内的值
127.0.0.1:6379> lindex list1 3 //查找第三个元素的内容 "1" 127.0.0.1:6379> llen list1 // 查找一共有多少个元素 (integer) 6 127.0.0.1:6379> del list2 //删除list2 (integer) 1 127.0.0.1:6379> lrem list1 3 1 //删掉这个集合中有三个名字为1的值 (integer) 1 127.0.0.1:6379> ltrim list1 1 2 //删掉1-2这个区间的值 OK
4.把一个集合的最后一个元素给另一个集合的第一个元素
127.0.0.1:6379> lpush list1 1 2 3 4 5 (integer) 5 127.0.0.1:6379> rpush list2 11 22 33 44 55 (integer) 5 127.0.0.1:6379> lrange list1 0 -1 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 127.0.0.1:6379> lrange list2 0 -1 1) "11" 2) "22" 3) "33" 4) "44" 5) "55" 127.0.0.1:6379> rpoplpush list1 list2 //设置把list1 最后一个给list2 "1" 127.0.0.1:6379> lrange list1 0 -1 1) "5" 2) "4" 3) "3" 4) "2" 127.0.0.1:6379> lrange list2 0 -1 1) "1" 2) "11" 3) "22" 4) "33" 5) "44" 6) "55"
5.修改list集合里面指定下标的值
127.0.0.1:6379> lrange list1 0 -1 1) "5" 2) "4" 3) "3" 4) "2" 127.0.0.1:6379> lset list1 2 mysql //修改下标为2的值为mysql OK 127.0.0.1:6379> lrange list1 0 -1 1) "5" 2) "4" 3) "mysql" 4) "2"
6.往list集合里面插入一个值
127.0.0.1:6379> lrange list1 0 -1 1) "5" 2) "4" 3) "mysql" 4) "2" 127.0.0.1:6379> linsert list1 before mysql java //查找到mysql在mysql前面插入名字叫java的值 (integer) 5 127.0.0.1:6379> lrange list1 0 -1 1) "5" 2) "4" 3) "java" 4) "mysql" 5) "2"
3.hash Map
1.添加/查询
127.0.0.1:6379> hset user:001 id 11 name zhansan age 13 //添加一条数据 (integer) 3 127.0.0.1:6379> hget user:001 id //查询当前的id值 "11" 127.0.0.1:6379> hget user:001 name //查询name值 "zhansan" 127.0.0.1:6379> hmset user:002 id 11 name zhansan age 13 //添加多个 OK 127.0.0.1:6379> hmget user:002 id name age //查询多个值 1) "11" 2) "zhansan" 3) "13"
2.修改 遍历
127.0.0.1:6379> hgetall user:001 //遍历001 1) "id" 2) "11" 3) "name" 4) "zhansan" 5) "age" 6) "13" 127.0.0.1:6379> hdel user:001 age //删除001中的age元素 (integer) 1 127.0.0.1:6379> hgetall user:001 //查看修改之后的 1) "id" 2) "11" 3) "name" 4) "zhansan"
3.查看map长度和判断 key是否存在
127.0.0.1:6379> hlen user:001 //查看user001 的长度 (integer) 2 127.0.0.1:6379> hexists user:001 name //查看user:001 是否存在name属性 (integer) 1 127.0.0.1:6379> hexists user:001 name11 //不存在返回0 (integer) 0 127.0.0.1:6379>
4.遍历map里面键的值 或者的是值的值
127.0.0.1:6379> hkeys user:001 //遍历建的值 1) "id" 2) "name" 127.0.0.1:6379> hvals user:001 //遍历值的值 1) "11" 2) "zhansan" 127.0.0.1:6379>
5.给元素自增 (double和int类型)
127.0.0.1:6379> hincrby user:001 id 1 //给id自增 1 (integer) 13 127.0.0.1:6379> hincrbyfloat user:001 id 1.22 //给id自增 1.22这多 但是是小数类型的 "14.22000000000000064" 127.0.0.1:6379>
6.给user:001添加一个key 和value
127.0.0.1:6379> hsetnx user:001 password 123456 (integer) 1 127.0.0.1:6379> hsetnx user:001 password 123456 (integer) 0 hset user:001 uid1111 22222 通过这个方法也可以添加一个 就是名称相同的画
4.Set
1.添加和查询, 和查询是否重复
127.0.0.1:6379> sadd set1:1 1 1 2 2 2 3 4 5 //添加一条 如果重复那么 就自动去重 (integer) 5 127.0.0.1:6379> smembers set1:1 //查询里面存在的内容 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> sismember set1:1 4 //查询set里面是否存在 4 这个元素 (integer) 1 127.0.0.1:6379> sismember set1:1 1 (integer) 1 127.0.0.1:6379> sismember set1:1 0//查询set里面是否存在 0 这个元素 (integer) 0
展现列表统计有用
2.删除 元素 和查看数量
127.0.0.1:6379> smembers set1:1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> srem set1:1 3 //删除一个元素名字叫3的值 (integer) 1 127.0.0.1:6379> scard set1:1 //查看当前剩余多少个元素 (integer) 4 127.0.0.1:6379> smembers set1:1 1) "1" 2) "2" 3) "4" 4) "5"
一般用于抽奖 如果抽到了 那么就要把那个人弹出去这样子的
3.展示 和 展示完成之后移除
127.0.0.1:6379> sadd set2 1 2 3 4 5 6 7 8 9 (integer) 9 127.0.0.1:6379> srandmember set2 3 //随机展示三个元素 1) "9" 2) "8" 3) "5" 127.0.0.1:6379> spop set2 2 //随机展示两个元素并且把他们删掉 1) "5" 2) "1" 127.0.0.1:6379> smembers set2 1) "2" 2) "3" 3) "4" 4) "6" 5) "7" 6) "8" 7) "9"
4.把set2里面的指定元素移动到set3里面去
127.0.0.1:6379> smembers set2 1) "2" 2) "3" 3) "4" 4) "6" 5) "7" 6) "8" 7) "9" 127.0.0.1:6379> smembers set3 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> smove set2 set3 4 (integer) 1 127.0.0.1:6379> smembers set3 1) "a" 2) "b" 3) "c" 4) "4"
5.1 差集
127.0.0.1:6379> sadd s1 a b c 1 2 (integer) 5 127.0.0.1:6379> sadd s2 1 2 3 a x (integer) 5 127.0.0.1:6379> sdiff s1 s2 //查找旨在s1 里面有 在s2 里面没有的值 1) "b" 2) "c"
5.1 并集
127.0.0.1:6379> sunion s1 s2 //查找两个里面都有的 1) "a" 2) "b" 3) "c" 4) "1" 5) "2" 6) "3" 7) "x" 127.0.0.1:6379> sinter s1 s2 //查找里面两个不相同的 1) "1" 2) "2" 3) "a" 127.0.0.1:6379> sintercard 2 s1 s2 //查找里面两个不相同的有多少个 (integer) 3
5.ZSet
(用来做数据排名)
1.添加 ,查询 (更具分数从大到小和从小到大)
127.0.0.1:6379> zadd zset1 60 v1 70 v2 80 v3 90 v4 100 v5 //插入数据 要带上分数 (integer) 5 127.0.0.1:6379> zrange zset1 0 -1 //查询里面所有值 1) "v1" 2) "v2" 3) "v3" 4) "v4" 5) "v5" 127.0.0.1:6379> zrange zset1 0 -1 withscores //从小到大查询 并且查询分数和值 1) "v1" 2) "60" 3) "v2" 4) "70" 5) "v3" 6) "80" 7) "v4" 8) "90" 9) "v5" 10) "100" 127.0.0.1:6379> zrevrange zset1 0 -1 withscores //从大到小查询, 并且查询分数和值 1) "v5" 2) "100" 3) "v4" 4) "90" 5) "v3" 6) "80" 7) "v2" 8) "70" 9) "v1" 10) "60"
2.分页 ,查找指定分数内的值
127.0.0.1:6379> zrangebyscore zset1 60 90 //查找60-90里面的值 1) "v1" 2) "v2" 3) "v3" 4) "v4" 127.0.0.1:6379> zrangebyscore zset1 60 90 withscores//查找60-90里面的值 和分数 1) "v1" 2) "60" 3) "v2" 4) "70" 5) "v3" 6) "80" 7) "v4" 8) "90" 127.0.0.1:6379> zrangebyscore zset1 (60 90 withscores//查找60-90里面的值 和分数 但是不包括60 1) "v2" 2) "70" 3) "v3" 4) "80" 5) "v4" 6) "90" 127.0.0.1:6379> zrangebyscore zset1 (60 90 withscores limit 0 2 //查找60-90里面的值 和分数 不包括60 并且从0到2之内的数据分页 1) "v2" 2) "70" 3) "v3" 4) "80" 127.0.0.1:6379> zrangebyscore zset1 (60 90 withscores limit 0 3 //查找60-90里面的值 和分数 不包括60 并且从0到3之内的数据 分页 1) "v2" 2) "70" 3) "v3" 4) "80" 5) "v4" 6) "90"
3.常用的命令(删除, 查找 ,查找范围 ,弹出最小最大,查找排名第几)
127.0.0.1:6379> zscore zset1 v4 //查询v4对应的分数 "90" 127.0.0.1:6379> zcard zset1 //查询zset1里面有多少个元素 (integer) 5 127.0.0.1:6379> zrem zset1 v5 //删除v5这个值 (integer) 1 127.0.0.1:6379> zincrby zset1 3 v1 //给v1这个值增加3 "63" 127.0.0.1:6379> zcount zset1 60 100 //查找60-100分的有多少个 (integer) 4 127.0.0.1:6379> zmpop 1 zset1 min count 1 //弹出分数最小的值 1) "zset1" 2) 1) 1) "v1" 2) "63" 127.0.0.1:6379> zmpop 1 zset1 max count 1 //弹出分数最大的值 1) "zset1" 2) 1) 1) "v4" 2) "90" 127.0.0.1:6379> zrange zset1 0 -1 //查找所有的元素 1) "v2" 2) "v3" 127.0.0.1:6379> zrank zset1 v2 //查找v2在正序排序里面排第几 (integer) 0 127.0.0.1:6379> zrevrank zset1 v2//查找v2在倒叙排序里面排第几 (integer) 1
5.beitmap
127.0.0.1:6379> setbit a1 1 1 //设置字节1位置1这个位置设置为1 (integer) 0 127.0.0.1:6379> setbit a1 2 1 //设置字节2位置1这个位置设置为1 (integer) 0 127.0.0.1:6379> setbit a1 3 1//设置字节3位置1这个位置设置为1 (integer) 0 127.0.0.1:6379> type a1 //查看bit这个类型是什么 string 127.0.0.1:6379> getbit a1 1// 查询a1 第一个字节是否为true (integer) 1 127.0.0.1:6379> bitcount a1 //查看a1中有多少个为1的值 (integer) 3