Redis常用命令汇总

由于项目中经常会使用Redis作为缓存,所以,在此记录Redis的日常使用操作与基础命令  

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

redis官网: https://redis.io

redis中文网: http://www.redis.net.cn  (对于英文不好的同学)

 

数据结构包括: 字符串,哈希,列表,集合,有序集合还有发布订阅等

 

1. 字符串

string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

redis 127.0.0.1:6379> SET name "redis.net.cn"
OK
redis 127.0.0.1:6379> GET name
"redis.net.cn"

命令:

    set  key  value   

 

 

 

 

 

2. 哈希

Redis hash 是一个键值对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。 每个 hash 可以存储 232 - 1 键值对(40多亿)

redis 127.0.0.1:6379> HMSET user:1 username redis.net.cn password redis.net.cn points 200
OK
redis 127.0.0.1:6379> HGETALL user:1
1) "username"
2) "redis.net.cn"
3) "password"
4) "redis.net.cn"
5) "points"
6) "200"
redis 127.0.0.1:6379>

 

 

3.列表

 Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)

redis 127.0.0.1:6379> lpush redis.net.cn redis
(integer) 1
redis 127.0.0.1:6379> lpush redis.net.cn mongodb
(integer) 2
redis 127.0.0.1:6379> lpush redis.net.cn rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange redis.net.cn 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

 

4. 集合

Redis的Set是string类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

redis 127.0.0.1:6379> sadd redis.net.cn redis
(integer) 1
redis 127.0.0.1:6379> sadd redis.net.cn mongodb
(integer) 1
redis 127.0.0.1:6379> sadd redis.net.cn rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd redis.net.cn rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers redis.net.cn
 
1) "rabitmq"
2) "mongodb"
3) "redis"

 

5.有序集合

 Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

redis 127.0.0.1:6379> zadd redis.net.cn 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd redis.net.cn 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd redis.net.cn 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd redis.net.cn 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE redis.net.cn 0 1000
 
1) "redis"
2) "mongodb"
3) "rabitmq"

  1) 添加有序集合数据

zadd setName 80 python

zadd setName 90 java

zadd setName 100 php

  2)查看分数

zscore setName python   // '80'

zscore setName php       // '100'

  3)按照名次查看排行榜

zrevrange  setName  0  -1  withscores

//0:开始索引位置    -1:结束位置(包含) 获取所有排行的数据
//withscores 排行并返回分数

> 1) “php”
> 2) “100> 3) “java”
> 4) “90> 5) “python”
> 6) “80

    查看前三名

zrevrange setName 0 2 withscores

//正常我们都是倒序,我们还可以从低到高排序  使用命令 zrange即可

  4)直接查看排名

//与zrevrange类似,zrevrank是以分数由高到低的排序返回玩家排名(实际返回的是以0开始的索引),对应的zrank则是以分数由低到高的排序返回排名

zrevrank setName php    //0

  5)  增减排行榜分数

//有的排行榜是在变更时重新设置玩家的分数,而还有的排行榜则是以增量方式修改玩家分数,增量可正可负。如果执行zincrby时玩家尚不在排行榜中,则认为其原始分数为0,相当于执行zdd。

zincrby setName 15 python //95 返回修改之后的数据

  6) 移除某个玩家

zrem setName java  // 1

  7)   删除排行榜

del  setName //1

   8) 将多个集合进行取交集操作,其中key的数量必须一numkeys参数指定,并将该交集结果存储到一个destination中

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

 

 示例:

# 有序集 mid_test
redis 127.0.0.1:6379> ZADD mid_test 70 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 70 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 99.5 "Tom"
(integer) 1

# 另一个有序集 fin_test
redis 127.0.0.1:6379> ZADD fin_test 88 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 75 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 99.5 "Tom"
(integer) 1

# 交集
redis 127.0.0.1:6379> ZINTERSTORE sum_point 2 mid_test fin_test
(integer) 3

# 显示有序集内所有成员及其分数值
redis 127.0.0.1:6379> ZRANGE sum_point 0 -1 WITHSCORES     
1) "Han Meimei"
2) "145"
3) "Li Lei"
4) "158"
5) "Tom"
6) "199"

 

 

6.发布订阅

 

 

7. 批量删除key

redis-cli -h -p -n 3 keys "*" |xargs redis-cli -h -p -n 3 del



-n  选择的数据库

 

 

 

 8. 查看Redis下数据库数

config  get  databases
1) "databases"
2) "21"

CONFIG GET 获取配置参数

 

 

 

命令练习:  http://try.redis.io/

posted @ 2018-05-08 15:09  X-Wolf  阅读(336)  评论(0)    收藏  举报