1、String字符串
127.0.0.1:6379> set key helllo
OK
127.0.0.1:6379> get key
"helllo"
127.0.0.1:6379> APPEND key ,world
(integer) 12
127.0.0.1:6379> get key
"helllo,world"
127.0.0.1:6379> EXISTS key
(integer) 1
127.0.0.1:6379> STRLEN key
(integer) 12
127.0.0.1:6379> set key1 hello,world
OK
127.0.0.1:6379> GETRANGE key1 0 3
"hell"
127.0.0.1:6379> GETRANGE key1 0 -1
"hello,world"
127.0.0.1:6379> set key1 asdfgh
OK
127.0.0.1:6379> SETRANGE key1 1 xxx
(integer) 6
127.0.0.1:6379> get key1
"axxxgh"
2、List列表
127.0.0.1:6379> LPUSH list one #将一个值或多个值插入到列表的头部
(integer) 1
127.0.0.1:6379> LPUSH list two
(integer) 2
127.0.0.1:6379> LPUSH list three
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1 #获取list中的值
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> LRANGE 0 1 #通过区间获取具体的值
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> LRANGE list 0 1
1) "three"
2) "two"
127.0.0.1:6379> RPUSH list rigth ##将一个值或多个值插入到列表的尾部
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
4) "rigth"
127.0.0.1:6379> LPOP list #移除list的第一个元素
"three"
127.0.0.1:6379> RPOP list # 移除list的最后一个元素
"rigth"
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> LINDEX list 0 #通过下标获取list中的某个值
"two"
127.0.0.1:6379> LLEN list #返回list的长度
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> LPUSH list two
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "two"
3) "one"
127.0.0.1:6379> LREM list 2 two # 移除list中指定个数的value,精确匹配
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "one"
127.0.0.1:6379> LREM list 1 one
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
(empty list or set)
127.0.0.1:6379> RPUSH list one two three four
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "one"
2) "two"
3) "three"
4) "four"
127.0.0.1:6379> LTRIM list 1 2 # 通过下标截取指定的长度,list已被改变
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "three"
rpoplpush:移除列表的最后一个元素,并将其添加到另一个列表中
127.0.0.1:6379> RPUSH list one two three
(integer) 3
127.0.0.1:6379> RPOPLPUSH list list1 #移除列表的最后一个元素,并将其添加到另一个列表中
"three"
127.0.0.1:6379> LRANGE list 0 -1
1) "one"
2) "two"
127.0.0.1:6379> LRANGE list1 0 -1
1) "three"
lset:将列表中指定下标的值替换为另外一个值
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> EXISTS list
(integer) 0
127.0.0.1:6379> lset list 0 one #不存在会报错
(error) ERR no such key
127.0.0.1:6379> RPUSH list one
(integer) 1
127.0.0.1:6379> LRANGE list 0 0
1) "one"
127.0.0.1:6379> lset list 0 two #如果存在,更新下标的值
OK
127.0.0.1:6379> LRANGE list 0 0
1) "two"
LINSERT:将某个值插入到某个列表中某个元素的前面或后面
127.0.0.1:6379> RPUSH list hello hello1 hello1
(integer) 3
127.0.0.1:6379> lset list 2 hello2
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "hello"
2) "hello1"
3) "hello2"
127.0.0.1:6379> LINSERT list before hello1 111 #将111插入到hello1中的前面
(integer) 4
127.0.0.1:6379> LINSERT list after hello2 222 #将222插入到hello12中后面
(integer) 5
127.0.0.1:6379> LRANGE list 0 -1
1) "hello"
2) "111"
3) "hello1"
4) "hello2"
5) "222"
127.0.0.1:6379>
3、Set集合
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> sadd set hello # 添加元素
(integer) 1
127.0.0.1:6379> sadd set hello1
(integer) 1
127.0.0.1:6379> sadd set hello2
(integer) 1
127.0.0.1:6379> SMEMBERS set # 查看所有元素
1) "hello1"
2) "hello2"
3) "hello"
127.0.0.1:6379> SISMEMBER set hello #判断某个元素是不是在集合中
(integer) 1
127.0.0.1:6379> SISMEMBER set 111
(integer) 0
127.0.0.1:6379> SCARD set # 获取set中元素的个数
(integer) 3
127.0.0.1:6379> SREM set hello #移除set中的指定元素
(integer) 1
127.0.0.1:6379> SMEMBERS set
1) "hello1"
2) "hello2"
随机抽取某几个元素
127.0.0.1:6379> sadd myset 1 2 3 4 5 6 7 8 9
(integer) 9
127.0.0.1:6379> SRANDMEMBER myset # 随机抽取一个元素
"2"
127.0.0.1:6379> SRANDMEMBER myset
"1"
127.0.0.1:6379> SRANDMEMBER myset 3 # 随机抽取3个元素
1) "5"
2) "7"
3) "8"
127.0.0.1:6379> SMEMBERS myset
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"
127.0.0.1:6379> spop myset #随机移除一个元素
"5"
127.0.0.1:6379> SMEMBERS myset
1) "1"
2) "2"
3) "3"
4) "4"
5) "6"
6) "7"
7) "8"
8) "9"
将一个指定的值移到另一个set中
127.0.0.1:6379> sadd myset1 hello1 hello2
(integer) 2
127.0.0.1:6379> sadd myset2 world1 world2
(integer) 2
127.0.0.1:6379> SMOVE myset1 myset2 hello1 #将hello1移到myset2中
(integer) 1
127.0.0.1:6379> SMEMBERS myset1
1) "hello2"
127.0.0.1:6379> SMEMBERS myset2
1) "world2"
2) "world1"
3) "hello1"
集合操作:差集,交集,并集
127.0.0.1:6379> sadd set1 a b c
(integer) 3
127.0.0.1:6379> sadd set2 a c d e
(integer) 4
127.0.0.1:6379> SDIFF set1 set2 #求set1的差集
1) "b"
127.0.0.1:6379> SDIFF set2 set1 #求set2的差集
1) "e"
2) "d"
127.0.0.1:6379> SINTER set1 set2 # 求两个集合的交集
1) "a"
2) "c"
127.0.0.1:6379> SUNION set1 set2 #求两个集合的并集
1) "a"
2) "b"
3) "c"
4) "e"
5) "d"
4、Hash哈希
127.0.0.1:6379> hset myhash key1 hello # 创建一个值 key-value类型
(integer) 1
127.0.0.1:6379> hget myhash key1
"hello"
127.0.0.1:6379> hset myhash key1 hello1 #如果该key1中有value,则就会替换原来的value
(integer) 0
127.0.0.1:6379> hset myhash key1 hello1 key2 hello2 key3 hello3
(integer) 2
127.0.0.1:6379> hmget myhash key1 key2 #获取指定key对应的value值
1) "hello1"
2) "hello2"
127.0.0.1:6379> hgetall myhash # 获取hash表中所有的值
1) "key1"
2) "hello1"
3) "key2"
4) "hello2"
5) "key3"
6) "hello3"
127.0.0.1:6379> hdel myhash key1 #删除指定的字段
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "key2"
2) "hello2"
3) "key3"
4) "hello3"
127.0.0.1:6379> HGETALL myhash
1) "key2"
2) "hello2"
3) "key3"
4) "hello3"
5) "key1"
6) "value1"
7) "key4"
8) "value4"
127.0.0.1:6379> HLEN myhash #获取hash表中元素的个数
(integer) 4
127.0.0.1:6379> HEXISTS myhash key1 # 判断hash表中是否包含指定元素
(integer) 1
127.0.0.1:6379> HEXISTS myhash key5
(integer) 0
127.0.0.1:6379> hkeys myhash #获取所有的key
1) "key2"
2) "key3"
3) "key1"
4) "key4"
127.0.0.1:6379> hvals myhash #获取所有的value
1) "hello2"
2) "hello3"
3) "value1"
4) "value4"
127.0.0.1:6379> hset myhash key1 6
(integer) 1
127.0.0.1:6379> HINCRBY myhash key1 2 #在原来的基础上加一个值
(integer) 8
127.0.0.1:6379> HINCRBY myhash key1 -3
(integer) 5
127.0.0.1:6379> hsetnx myhash key2 hello #如果不存在可以设置
(integer) 1
127.0.0.1:6379> hsetnx myhash key2 hello1 #如果存在设置失败
(integer) 0
127.0.0.1:6379> HGET myhash key2
"hello"
5、Zset有序集合
127.0.0.1:6379> zadd myzset 1 one 4 two 3 three # 添加元素到集合,每个人元素前面需加一个标识符
(integer) 3
127.0.0.1:6379> ZRANGE myzset 0 -1 #Zset默认会根据每个元素前面的标识进行排除
#查看集合中所有元素
1) "one"
2) "three"
3) "two"
127.0.0.1:6379> zadd salary 2500 xiaohua 800 xiaoli 1600 xiaobai 700 xiaohei
(integer) 4
127.0.0.1:6379> ZREVRANGE salary 0 -1 #按降序进行排列
1) "xiaohua"
2) "xiaoli"
3) "xiaohei"
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf #从小到大排序
1) "xiaohei"
2) "xiaoli"
3) "xiaobai"
4) "xiaohua"
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf withscores # 返回排序后并且带参数的
1) "xiaohei"
2) "700"
3) "xiaoli"
4) "800"
5) "xiaobai"
6) "1600"
7) "xiaohua"
8) "2500"
127.0.0.1:6379> ZRANGEBYSCORE salary -inf 1000 withscores # 显示规定范围内排序信息
1) "xiaohei"
2) "700"
3) "xiaoli"
4) "800"
127.0.0.1:6379> ZRANGE salary 0 -1
1) "xiaohei"
2) "xiaoli"
3) "xiaobai"
4) "xiaohua"
127.0.0.1:6379> ZREM salary xiaobai #移除集合中的某个元素
(integer) 1
127.0.0.1:6379> zrange salary 0 -1 # 查看集合中的所有元素
1) "xiaohei"
2) "xiaoli"
3) "xiaohua"
127.0.0.1:6379> ZCARD salary # 获取集合中的元素个数
(integer) 3
127.0.0.1:6379> zadd myzset 2 zhang 1 li 7 tian 5 yao 4 zhao
(integer) 5
127.0.0.1:6379> zcount myzset 4 5 #获取指定区间的元素个数
(integer) 2
127.0.0.1:6379> ZRANGE myzset 0 -1
1) "li"
2) "zhang"
3) "zhao"
4) "yao"
5) "tian
6、Bitmaps
#记录周一到周五的打卡记录
127.0.0.1:6379> setbit sign 0 0
(integer) 0
127.0.0.1:6379> setbit sign 1 1
(integer) 0
127.0.0.1:6379> setbit sign 2 0
(integer) 0
127.0.0.1:6379> setbit sign 3 1
(integer) 0
127.0.0.1:6379> setbit sign 4 1
(integer) 0
### 查看某一天是否有打卡
127.0.0.1:6379> getbit sign 1
(integer) 1
127.0.0.1:6379> getbit sign 0
(integer) 0
### 统计这周的打卡天数
127.0.0.1:6379> BITCOUNT sign
(integer) 3
7、Hyperloglog
127.0.0.1:6379> PFADD mykey a b c d e f g h #创建第一组元素
(integer) 1
127.0.0.1:6379> PFCOUNT mykey #统计第一组中元素的数量
(integer) 8
127.0.0.1:6379> PFADD mykey1 a b f i k l m n
(integer) 1
127.0.0.1:6379> PFCOUNT mykey1
(integer) 8
127.0.0.1:6379> PFMERGE mykey2 mykey mykey1 #合并两组的数据到新的组中
OK
127.0.0.1:6379> PFCOUNT mykey2
(integer) 13
8、Geospatial地理位置
(1)添加地理位置
127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing 121.47 31.23 shanghai
(integer) 2
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqin 114.05 22.52 shengzhen
(integer) 2
127.0.0.1:6379> geoadd china:city 120.16 30.24 xian
(integer) 1
(2)获得某个城市的经纬度
127.0.0.1:6379> geopos china:city beijing shanghai xian
1) 1) "116.39999896287918091"
2) "39.90000009167092543"
2) 1) "121.47000163793563843"
2) "31.22999903975783553"
3) 1) "120.1600000262260437"
2) "30.2400003229490224"
(3)查看两地距离
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km
1) "chongqin"
2) "shengzhen"
3) "xian"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km
1) "chongqin"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist
1) 1) "chongqin"
2) "341.9374"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withcoord
1) 1) "chongqin"
2) 1) "106.49999767541885376"
2) "29.52999957900659211"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withdist withcoord count 1
1) 1) "chongqin"
2) "341.9374"
3) 1) "106.49999767541885376"
2) "29.52999957900659211"