Redis 基本命令、键(key)命令、数据类型概述

目录

Redis 基本命令

Redis 键(key)

Redis 数据类型概述


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 的内容

Redis 键(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> 

Redis 数据类型概述

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]之间的成员,并按照分数由低到高排序。

发布了458 篇原创文章 · 获赞 884 · 访问量 92万+

猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/90339509
今日推荐