目录
启动
redis启动命令
后台启动:
修改配置文件 redis.conf,将daemonize改为yes
客户端连接
./src/redis-cli -h 127.0.0.1 -p 6379
-h 服务器地址
-p 连接端口(默认6379)
-a 连接密码
基本数据类型,
string,list,hash,set,zset
一、String 类型
存储string,int,float类型,编码方式不同。
1-成功执行会清除原有的TTL;
2-可以附带参数:
1-EX seconds : 将键的过期时间设置为 seconds 秒。
SET key value EX seconds = SETEXkey seconds value 。
2-PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。
SET key value PX milliseconds = PSETEX key milliseconds value 。
3-NX :只在键不存在时, 才对键进行设置操作。
SET key value NX = SETNX key value 。
4-XX :只在键已经存在时, 才对键进行设置操作。
127.0.0.1:16379> get user:03
"8"
127.0.0.1:16379> INCR user:03 //递增1
(integer) 9
127.0.0.1:16379> INCRBY user:03 5 //递增5
(integer) 14
127.0.0.1:16379>
二、List类型
特点:有序、可重复。
最多2^32 -1个。可以用作队列和栈。
| lpush | lpush key v1 v2… | 从左侧插入 |
| lpop | lpop key count | 从左侧弹出(数量) |
| rpush | rpush key v1 v2… | 右侧插入 |
| rpop | rpop key count | 右侧弹出 |
| lrange | lrange start end | 返回列表中指定区间元素,全部则end为 -1 |
| lpushx | lpushx key v | 插入头部 |
| rpushx | rpushx key v | 插入到尾部 |
| llen | llen key | 获取元素个数 |
| lindex | lindex key positon | 通过索引下标获取元素 |
| lrem | lrem key count value | 删除元素,count=0,删除全部,count>0,头部开始;count<0,尾部开始基数,count为删除元素个数 |
| linsert | linsert key before/after povit v | 指定元素前/后插入元素 |
| lset | lset key index value | 通过索引给元素赋值 |
127.0.0.1:16379> lrange names 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:16379> linsert names before a v //在元素a前插入元素v
(integer) 4
127.0.0.1:16379> lrange names 0 -1
1) "a"
2) "v"
3) "b"
4) "c"
127.0.0.1:16379> lset names 2 aa //为指定索引赋值
OK
127.0.0.1:16379> lrange names 0 -1
1) "a"
2) "v"
3) "aa"
4) "c"
127.0.0.1:16379>
三、Set类型
特点:有序、唯一。
| sadd | sadd key m1 m2… | 为集合添加元素 |
| smembers | smembers key | 获取集合所有元素 |
| srem | srem key m1 m2 | 删除集合中元素 |
| spop | spop key count | 返回集合中随数量元素,并删除 |
| srandmember | srandmember key count | 返回集合中随数量元素,不删除 |
| sismember | sismember key m | 判断元素是在集合中 |
| scard | scard key | 获取集合中元素数量 |
| sinter | sinter key1 key2 … | 求多个集合交集 |
| sdiff | sdiff key1 key2… | 求多个集合交集 |
| sunion | sunion key1 key2… | 多个集合并集 |
| smove | smove key1 key2 m1 | 将key1中m1移到key2中 |
127.0.0.1:16379> sadd myset s1 s2 s3 s4
(integer) 4
127.0.0.1:16379> SMEMBERS myset
1) "s2"
2) "s4"
3) "s3"
4) "s1"
127.0.0.1:16379> SISMEMBER myset s4
(integer) 1
127.0.0.1:16379> srem myset s1 s2
(integer) 2
127.0.0.1:16379> SMEMBERS myset
1) "s4"
2) "s3"
127.0.0.1:16379> scard myset
(integer) 2
127.0.0.1:16379> sadd myset s5 s6 s7
(integer) 3
127.0.0.1:16379> SMEMBERS myset
1) "s5"
2) "s4"
3) "s6"
4) "s3"
5) "s7"
127.0.0.1:16379> spop myset 1
1) "s6"
127.0.0.1:16379> SMEMBERS myset
1) "s7"
2) "s5"
3) "s3"
4) "s4"
127.0.0.1:16379> SRANDMEMBER myset 1
1) "s7"
127.0.0.1:16379> SMEMBERS myset
1) "s7"
2) "s5"
3) "s3"
4) "s4"
127.0.0.1:16379> sadd myset2 s3 s4 s9 s8
(integer) 4
127.0.0.1:16379> SMEMBERS myset2
1) "s8"
2) "s9"
3) "s4"
4) "s3"
127.0.0.1:16379> SINTER myset myset2
1) "s3"
2) "s4"
127.0.0.1:16379> sdiff myset myset2
1) "s7"
2) "s5"
127.0.0.1:16379> SUNION myset myset2
1) "s7"
2) "s5"
3) "s9"
4) "s8"
5) "s3"
6) "s4"
127.0.0.1:16379>
四、Sorted Set(Zset)类型
特点:有序,
| zadd | zadd key score1 member1 score2 member2 … | 添加成员 |
| zrem | zrem key m1 m2 … | 删除成员 |
| zrange | zrange key start end (WITHSCORES) | 获取指定区间成员,分递增 |
| zrevrange | zrevrange key start end | 获取指定区间成员,分数递减 |
| zcard | zcard key | 获取元素数量 |
| zcount | zcount key min max | 返回分值在 [min,max]区间元素 |
| zscore | zscore key member | 获取元素分数 |
| zrank | zrank key member | 获取元素排名 ,从小到大 |
| zrevrank | zrevrank key member | 获取元素排名 ,从大到小 |
| zincby | zincrby key increament member | 在元素分值上增加 |
127.0.0.1:16379> zadd myzset 12 z1 14 z2 15 z3 13 z4 16 z5
(integer) 5
127.0.0.1:16379> zrange myzset 0 -1 withscores
1) "z1"
2) "12"
3) "z4"
4) "13"
5) "z2"
6) "14"
7) "z3"
8) "15"
9) "z5"
10) "16"
127.0.0.1:16379> zrevrange myzset 0 3
1) "z5"
2) "z3"
3) "z2"
4) "z4"
127.0.0.1:16379> zcard myzset
(integer) 5
127.0.0.1:16379> zcount myzset 10 14
(integer) 3
127.0.0.1:16379> zscore myzset z3
"15"
127.0.0.1:16379> zrank myzset z4
(integer) 1
127.0.0.1:16379> zrank myzset z1
(integer) 0
127.0.0.1:16379> zrevrank myzset z4
(integer) 3
127.0.0.1:16379> zincrby myzset 10 z2
"24"
127.0.0.1:16379>
五、Hash类型
| hset | hset key field value | 单个赋值 |
| hmset | hmset key fild1 value1 field2 value2 | 批量赋值 |
| hgetall | hgetall key | 获取所有字段和值 |
| hget | hget key field | 获取一个字段值 |
| hmget | hmget key field1 field | 批量获取字段值 |
| hexists | hexists key field | 判断字段是否存在 |
| hlen | hlen key | 获取字段数量 |
| hincrby | hincrby key field increment | 指定字段增加数值 |
| hsetnx | hsetnx key field value | 赋值,field存在则不操作 |
| hdel | hdel key field1 field2 | 删除字段 |
127.0.0.1:16379> hset user name qu
(integer) 1
127.0.0.1:16379> hmset user age 21 sex male
OK
127.0.0.1:16379> hgetall user
1) "name"
2) "qu"
3) "age"
4) "21"
5) "sex"
6) "male"
127.0.0.1:16379> hget user age
"21"
127.0.0.1:16379> hmget user age name
1) "21"
2) "qu"
127.0.0.1:16379> hexists user country
(integer) 0
127.0.0.1:16379> hlen user
(integer) 3
127.0.0.1:16379> hincrby user age 10
(integer) 31
127.0.0.1:16379> hsetnx user name qu
(integer) 0
127.0.0.1:16379> hsetnx user work student
(integer) 1
127.0.0.1:16379> hgetall user
1) "name"
2) "qu"
3) "age"
4) "31"
5) "sex"
6) "male"
7) "work"
8) "student"
127.0.0.1:16379> hdel user name
(integer) 1
127.0.0.1:16379> hgetall user
1) "age"
2) "31"
3) "sex"
4) "male"
5) "work"
6) "student"
127.0.0.1:16379>
六、bitmap位类型
特点:进行位操作。节省空间
值为0或1
应用:签到
| setbit | setbit key offset value | 赋值 |
| getbit | getbit key offset | 取值 |
| bitcount | bitcount key | 获取值为1的个数 |
| bitpos | bitpos key value | 返回第一个设置bit的索引值 |
127.0.0.1:16379> setbit user1 1201 1
(integer) 0
127.0.0.1:16379> getbit user1 1201
(integer) 1
127.0.0.1:16379> setbit user1 1202 0
(integer) 0
127.0.0.1:16379> bitcount user1
(integer) 1
127.0.0.1:16379> bitpos user1 1
(integer) 1201
七、Geo地理位置类型
原理:将经纬度添加到key中,这些数据会存储到Zset方便查询。经纬度转分值原理是Z阶函数。
应用:附近的人,计算距离
| geoadd | geoadd key 经度1 纬度1 成员1 经度2 成员2… | 添加地理坐标 |
| geohash | geohash 成员1 成员2 … | 查看成员geohash |
| geopos | geopos key 成员1 成员2… | 返回成员经纬度 |
| geodist | geodist key 成员1 成员2 单位 | 计成员之间距离 |
| georadius | georadius 经度 纬度 距离 单位 | 以给经纬度为中心,找到某一半径内成员 |
| georadiusbymember | georadiusbymember key 成员 距离 单位 | 以某成员位置为中心,找某半径内成员 |
georadius/georadiusbymember参数
| withdist | 同时返回距离 |
| withcoord | 同时返回经纬度 |
| withhash | 同时返回geohash值 |
| asc | 由近到远排序 |
| desc | 由远到近排序 |
| count | 返回数量 |
127.0.0.1:16379> geoadd useraddr 116.2 40.2 user1 114.4 36.6 user2 114.0 30.5 user3 113.2 23.1 user4
(integer) 4
127.0.0.1:16379> geohash useraddr user1 user2
1) "wx4ssnnmbp0"
2) "ww925nzd3n0"
127.0.0.1:16379> geopos useraddr user1 user2 m
1) 1) "116.19999736547470093"
2) "40.19999954920563567"
2) 1) "114.39999908208847046"
2) "36.60000098934667534"
3) (nil)
127.0.0.1:16379> geopos useraddr user1 user2
1) 1) "116.19999736547470093"
2) "40.19999954920563567"
2) 1) "114.39999908208847046"
2) "36.60000098934667534"
127.0.0.1:16379> geodist useraddr user1 user2 m
"430029.7344"
127.0.0.1:16379> geodist useraddr user1 user2 km
"430.0297"
127.0.0.1:16379> GEORADIUS useraddr 117.3 39.7 500 km withdist
1) 1) "user1"
2) "109.0402"
2) 1) "user2"
2) "427.9953"
127.0.0.1:16379> GEORADIUSBYMEMBER useraddr user3 1000 km withdist
1) 1) "user4"
2) "826.8883"
2) 1) "user3"
2) "0.0000"
3) 1) "user2"
2) "679.4908"
127.0.0.1:16379> GEORADIUSBYMEMBER useraddr user3 1000 km withdist count 2
1) 1) "user3"
2) "0.0000"
2) 1) "user2"
2) "679.4908"
127.0.0.1:16379>
八、Stream类型(待补充)
redis 5.0后的类型,可用于持久化消息对啦。
版权声明:本文为weixin_45631654原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。