目录
Redis 基本命令
Redis 键(key)
Redis 数据类型概述
1、Redis 命令用于在 redis 服务上执行操作,要在 redis 服务上执行命令需要一个 redis 客户端。安装目录下的 redis-cli 就是自带的测试客户端。
命令行启动自带的 redis-cli 客户端连接到本地的 redis 服务:redis-cli
连接远程 redis 服务上执行命令:redis-cli -h host -p port -a password
[root@localhost bin]# ls
dump.rdb redis-check-aof redis-cli redis-sentinel
redis-benchmark redis-check-rdb redis.conf redis-server
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
[root@localhost bin]# ./redis-cli -h 127.0.0.1 -p 6379 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
PING | 用于检测 redis 服务是否启动,连接是否正常,连接成功时返回 PONG |
exit | 退出 redis-cli |
auth password | 当 redis 服务器开启密码验证,客户端连接时没有指定密码时,连接后必须使用 "auth 密码" 先进行授权,否则其它命令会使用不了。 |
set key value | 往 redis 数据库设置数据 |
get key | 从 redis 数据库读取数据。key 不存在时,返回 nil |
keys * | 查询 redis 数据库中的所有 key 值 |
del key | 删除指定的 key 的内容 |
1、Redis 键命令用于管理 redis 的键。
2、Redis 键命令的基本语法:command KEY_NAME
序号 | 命令 | 描述 |
---|---|---|
1 | del key | 删除指定的 key。key 不存在时不影响。可以同时删除多个,如 del key1 key2 ...。list、set、zset、hash 中的元素全部删除后,key 也会自动被删除。 |
2 | dump key | 序列化给定 key ,并返回被序列化的值。 |
3 | exists key | 检查给定 key 是否存在。返回 1 表示存在,返回 0 表示不存在。 |
4 | expire key seconds | 为给定 key 设置过期时间。单位 秒 |
5 | expireat key timestamp | EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 |
6 | pexpire key milliseconds | 设置 key 的过期时间亿以毫秒计。 |
7 | pexpireat key milliseconds-timestamp | 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 |
8 | keys pattern | 查找所有符合给定模式( pattern)的 key 。* 表示1个或多个,? 表示一个任意字符。keys * :查找所有key,keys user*:查找以 user 开头的 key,keys ag?:查找 ag 开头,且后面只有一个字符的 key。 |
9 | move key db | 将当前数据库的 key 移动到给定的数据库 db 当中。 |
10 | persist key | 移除 key 的过期时间,key 将持久保持。 |
11 | pttl key | 以毫秒为单位返回 key 的剩余的过期时间。如果没有对 key 设置超时,则返回 -1;-1 表示超时不存在。正常情况返回大于0的正数。 |
12 | ttl key | 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 |
13 | randomkey | 从当前数据库中随机返回一个 key 。 |
14 | rename key newkey | 修改 key 的名称。key 不存在时会报错:(error) ERR no such key。如果 newkey 已经存在时,则会删除旧值。 |
15 | renamenx key newkey | 仅当 newkey 不存在时,将 key 改名为 newkey 。key 不存在时报错。 |
16 | type key | 返回 key 所储存的值的类型。有 string、list、set、zset、hash。如果 key 不存在,则返回 none |
127.0.0.1:6379> keys *
1) "my_set"
2) "user_1"
3) "age"
4) "z_set"
5) "address"
6) "url"
127.0.0.1:6379> type z_set
zset
127.0.0.1:6379> type age
string
127.0.0.1:6379> type address
list
127.0.0.1:6379> ttl age
(integer) -1
127.0.0.1:6379> ttl url
(integer) -1
127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379> exists age
(integer) 1
127.0.0.1:6379> del age
(integer) 1
127.0.0.1:6379> keys *
1) "my_set"
2) "user_1"
3) "z_set"
4) "address"
5) "url"
127.0.0.1:6379> expire url 3 //设置 url 过期时间为 3 秒
(integer) 1
127.0.0.1:6379> keys * //3秒内查询时,url还在
1) "my_set"
2) "user_1"
3) "z_set"
4) "address"
5) "url"
127.0.0.1:6379> keys * //超过3秒后再查询时,url已经被自动删除了
1) "my_set"
2) "user_1"
3) "z_set"
4) "address"
127.0.0.1:6379>
1、Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
2、这里暂时先做个概述,后续会详细说明。
String(字符串)
1、string 是 redis最基本的类型,一个key对应一个value。一个键最大能存储512MB。
2、string 类型是二进制安全的,可以包含任何数据,比如jpg图片或者序列化的对象 。
127.0.0.1:6379> set url www.redis.net.cn
OK
127.0.0.1:6379> get url
"www.redis.net.cn"
127.0.0.1:6379>
Hash(哈希)
1、Redis hash 是一个键值对集合,值可以看成一个 Map。
2、Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
3、每个 hash 可以存储 40多亿键值对。
127.0.0.1:6379> hmset user_1 id 1000 name zhangSan age 25 address 深圳
OK
127.0.0.1:6379> hgetall user_1
1) "id"
2) "1000"
3) "name"
4) "zhangSan"
5) "age"
6) "25"
7) "address"
8) "\xe6\xb7\xb1\xe5\x9c\xb3"
127.0.0.1:6379>
hmset key filed value [filed2 value2 filed3 value3 ...]:同时为 key 指定多个 filed 与 value
hgetall key:获取 key 中的所有 filed-value
List(列表)
1、Redis 列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素导列表的头部(左边)或者尾部(右边)。
2、每个列表最多可存储 4294967295 个元素(约40多亿)
127.0.0.1:6379> lpush address shenZhen beiJing shangHai
(integer) 3
127.0.0.1:6379> lpush address hangZhou
(integer) 4
127.0.0.1:6379> lrange address 0 8
1) "hangZhou"
2) "shangHai"
3) "beiJing"
4) "shenZhen"
127.0.0.1:6379>
lpush key value1 value2 value3 ...:在指定的 key 关联的 lsit 的头部插入所有的 value,如果 key 不存在,则会先创建一个与该 key 关联的空链表,之后向链表的头部插入数据,插入成功,返回插入的个数。
lrange key start end:获取链表中 [start,end] 之间的元素值,从0开始计数。可以为负数,如 -1 表示链表尾部的元素,-2 表示倒数第二个。
Set(集合)
1、Redis 的 Set 是 string 类型的无序集合。和 java 一样,集合中不会有重复的元素。
2、集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
3、每个集合中最大的成员数为 4294967295(40多亿个成员)。
127.0.0.1:6379> sadd my_set a b c 1
(integer) 4
127.0.0.1:6379> sadd my_set c 1 2 3
(integer) 2
127.0.0.1:6379> smembers my_set
1) "a"
2) "c"
3) "3"
4) "b"
5) "1"
6) "2"
127.0.0.1:6379>
sadd key value1 value2 ...:向集合 key 中添加元素,key 不存在时会自动新建,value 存在时,后一次的会被忽略。
smembers key:获取集合 key 中的所有元素。
zset(sorted set:有序集合)
1、Redis zset 和 set 一样也是 string 类型元素的集合,且不允许重复的成员。
2、不同的是每个元素都会关联一个 double 类型的分数,redis 正是通过分数来为集合中的成员进行从小到大的排序。
3、zset 的成员是唯一的,但分数(score)却可以重复。
127.0.0.1:6379> zadd z_set 10 a 20 b 5 c
(integer) 3
127.0.0.1:6379> zadd z_set 30 a 20 d
(integer) 1
127.0.0.1:6379> zrangebyscore z_set 0 100
1) "c"
2) "b"
3) "d"
4) "a"
127.0.0.1:6379>
zadd key score1 member1 score2 member2 ...:添加元素到集合,元素在集合中存在则更新对应 score:
zrangebyscore key min max :返回分数在 [mix,max]之间的成员,并按照分数由低到高排序。