四、redis常用指令
一、准备工作
-
服务端启动
指令
./redis-server
-
服务端完整启动指令
指令
./redis-server path/to/redis.conf
-
服务端关闭
指令
pkill -9 redis
-
客户端启动
指令
./redis-cli
-
检测redis服务是否启动
指令
ping
返回PONG
则服务可用127.0.0.1:6379> ping PONG
-
客户端完整启动指令
redis-cli -h host -p port -a password
-
选择数据库(0-15)
127.0.0.1:6379> select 8 OK 127.0.0.1:6379[8]>
-
获取所有的
key_name
指令keys *
二、字符串
-
设置指定的
key_name
值指令
set key_name value
127.0.0.1:6379[8]> set name fuqiang OK
-
获取指定的
key_name
值指令
get key_name
127.0.0.1:6379[8]> get name "fuqiang"
-
设置指定的
key_name
并设置过期时间ex(秒) px(毫秒)
指令
set key_name value expression[ex second | px milli second]
127.0.0.1:6379[8]> set name 20 px 3000 OK 127.0.0.1:6379[8]> set name 20 ex 3 OK
-
返回指定
key_name
的值自增1
指令
incr key_name
127.0.0.1:6379[8]> set age 20 OK 127.0.0.1:6379[8]> incr age (integer) 21
-
返回指定
key_name
的值自减1
指令
decr key_name
127.0.0.1:6379[8]> get age "21" 127.0.0.1:6379[8]> decr age (integer) 20
-
返回指定
key_name
的值的长度指令
strlen key_name
127.0.0.1:6379[8]> strlen name (integer) 7
-
返回字符串的
子串
的值(包括首尾)指令
getrange key_name start stop
127.0.0.1:6379[8]> getrange name 0 2 "fuq"
-
若指定的
key_name
不存在时,为key_name
设置指定的值。设置成功返回1
,设置失败返回0
指令
setnx key_name value
127.0.0.1:6379[8]> setnx name fu (integer) 0 127.0.0.1:6379[8]> setnx address beijing (integer) 1
三、列表
-
设置指定的
key_name
的值指令
lpush key_name value
从左侧依次添加,第一个添加的元素是整个列表的最后一个元素指令
rpush key_name value
从右侧依次添加,第一个添加的元素是整个列表的第一个元素127.0.0.1:6379[8]> lpush course python andriod java h5 (integer) 4 127.0.0.1:6379[8]>
-
获取列表长度
指令
llen key_name
127.0.0.1:6379[8]> llen course (integer) 4
-
获取指定的
key_name
的区间值,下标的取值范围是在0到长度减1
指令
lrange key_name start stop
127.0.0.1:6379[8]> lrange course 0 3 1) "h5" 2) "java" 3) "andriod" 4) "python"
-
删除列表中的首尾数据
lpop key_name
从左侧删除第一个元素rpop key_name
从右侧删除第一个元素127.0.0.1:6379[8]> lpop course "h6" 127.0.0.1:6379[8]> rpop course "python"
-
删除列表中指定的数据
指令
lrem key_name count value
如果
count
为正值,则从count开始,自左向右找到value
,删除。如果
count
为负值,则从count开始,自右向左找到value
,删除。count
的取值范围- llen key
到-1
和0
到llen key -1
127.0.0.1:6379[8]> lrange course 0 4 1) "h5" 2) "java" 3) "andriod" 4) "python" 5) "java" 127.0.0.1:6379[8]> lrem course -1 java (integer) 1 127.0.0.1:6379[8]> lrange course 0 3 1) "h5" 2) "java" 3) "andriod" 4) "python"
四、哈希
-
设置指定的
key
如果field存在,则覆盖其原值。指令
hmset key_name filed_name value [field1 value1 ...]
127.0.0.1:6379[8]> hmset cart_1 yagao 1 xiangzao 2 OK 127.0.0.1:6379[8]> hmset cart_2 yashua 1 yatong 1 jingzi 1 OK
-
获取指定的
key
所有的键值信息指令
hgetall key_name
127.0.0.1:6379[8]> hgetall cart_1 1) "yagao" 2) "20" 3) "xiangzao" 4) "2" 127.0.0.1:6379[8]>
-
获取指定的
key_name
所有的filed
字段指令
hkeys key_name
127.0.0.1:6379[8]> hkeys cart_1 1) "yagao" 2) "xiangzao" 127.0.0.1:6379[8]> hkeys cart_2 1) "yashua" 2) "yatong" 3) "jingzi"
-
获取指定的
key_name
所有的value
值指令
hvals key_name
127.0.0.1:6379[8]> hvals cart_1 1) "1" 2) "2" 127.0.0.1:6379[8]> hvals cart_2 1) "1" 2) "1" 3) "1"
-
获取指定的
key
的field
的值指令
hget key_name field_name
127.0.0.1:6379[8]> hget cart_1 yagao "1"
-
获取指定的
key_name
所有字段的个数指令
hlen key_name
127.0.0.1:6379[8]> hlen cart_1 (integer) 2 127.0.0.1:6379[8]> hlen cart_2 (integer) 3 127.0.0.1:6379[8]>
-
设置指定的
key_name
如果field不存在,设置成功。否则,设置失败。指令
hsetnx key_name field_name value
127.0.0.1:6379[8]> hsetnx cart_1 yagao 50 (integer) 0 127.0.0.1:6379[8]>
-
删除指定的字段
指令
hdel key_name field_name
127.0.0.1:6379[8]> hdel cart_1 yagao (integer) 1 127.0.0.1:6379[8]> hkeys cart_1 1) "xiangzao"
-
判断指定
key_name
下的字段是否存在,若存在,返回1
,否则,返回0
;指令
hexists key_name filed_name
127.0.0.1:6379[8]> hexists cart_1 yagao (integer) 0 127.0.0.1:6379[8]> hexists cart_1 xiangzao (integer) 1
五、集合
-
添加指定
key_name
值,如添加的元素存在,则不添加。指令
sadd key_name value [value1 value2 ..]
127.0.0.1:6379[8]> sadd course mongo redis memcache (integer) 3
-
获取指定的
key_name
的所有元素指令
smembers key_name
127.0.0.1:6379[8]> smembers course 1) "redis" 2) "mongo" 3) "memcache"
-
获取集合长度
指令
scard key_name
127.0.0.1:6379[8]> scard course (integer) 3
-
删除指定
key_name
的元素指令
hpop key_name [count]
count 是删除的个数127.0.0.1:6379[8]> spop course "memcache" 127.0.0.1:6379[8]> spop course 2 1) "redis" 2) "mongo" 127.0.0.1:6379[8]> smembers course (empty list or set)
-
判断一个元素是否属于
key_name
集合指令
sismember key_name value
127.0.0.1:6379[8]> sismember course python (integer) 0 127.0.0.1:6379[8]> sismember course memcache (integer) 1
六、有序集合
-
添加
key_name
集合元素指令
zadd key_name score member [score1 member1 ...]
127.0.0.1:6379[8]> zadd course 1 python (integer) 1 127.0.0.1:6379[8]> zadd course 2 java (integer) 1 127.0.0.1:6379[8]> zadd course 2 java 3 h5 (integer) 1
-
获取有序集合的长度
指令
zcard key_name
127.0.0.1:6379[8]> zcard course (integer) 3
-
获取有序集合的元素
指令
zrange key_name start stop
127.0.0.1:6379[8]> zrange course 0 2 1) "python" 2) "h5" 3) "java"
-
获取指定元素的索引
指令
zrank key_name memeber
127.0.0.1:6379[8]> zrank course h5 (integer) 1
-
删除指定的元素
指令
zrem key_name member
127.0.0.1:6379[8]> zrem course java (integer) 1
-
获取成员的分值
指令
zscore key_name member
127.0.0.1:6379[8]> zscore course h5 "3"
-
获取
key_name
在指定分值之间的个数指令
zcount key_name min max
127.0.0.1:6379[8]> zcount course 0 10 (integer) 2