首页 > 代码库 > Redis入门

Redis入门

来说说redis的使用。windows直接下载.zip 解压后直接将解压后的文件夹添加到系统变量的path中。

1.PS F:\myredis> redis-server .\redis.windows.conf
...

[4712] 26 Oct 08:38:04.194 # Server started, Redis version 3.2.100
[4712] 26 Oct 08:38:04.195 * The server is now ready to accept connections on port 6379

 

按照上述方法启动本地服务。本地IP127.0.0.1 端口号默认为6379 (可以在redis.windows.conf中修改)

我们使用的时候,需要开启一个客户端,具体方法是另起一个命令行(windows下推荐用powershell,界面更友好一些)

PS C:\Users\rockderia> redis-cli -h 127.0.0.1 -p 6379


上述的命令是连接本地咱自己刚刚开启的那个redis服务,我们还可以连接远程部署好的redis服务

redis-cli -h host -p port -a password (需要密码)

 

2.redis类型。redis缓存更接近于编程语言当中的容器的使用。所以它本身就具有诸多的数据结构:
[1]String redis的String就像一个键值对,是Redis的最基本的类型。同时支持缓存二进制文件,示例:

set name "rockderia"
get name
"rockderia"

[2]Hash类型。首先它自身就是一个键值对组成的集合。这个集合需要一个标识,当中的数据以键值对的形式存在如下:

127.0.0.1:6379> HMSET user:1 username rockderia sss
(error) ERR wrong number of arguments for HMSET
127.0.0.1:6379> HMSET user:1 username rockseria age 10
OK
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "rockseria"
3) "age"
4) "10"
127.0.0.1:6379> HGET user:1 username
"rockseria"

可以看出,这种类型非常类似于Lua脚本中的 table 。

[3]List类型。不多说就是一个线性的链表,可以使用索引的操作。

127.0.0.1:6379> lpush rocklist one
(integer) 1
127.0.0.1:6379> lpush rocklist two
(integer) 2
127.0.0.1:6379> lpush rocklist three
(integer) 3
127.0.0.1:6379> lrange rocklist 0 2
1) "three"
2) "two"
3) "one"

数据在链表当中似乎是反向存储的。

[4]Set类型 无序唯一值的集合。String类型。因为同样是Hash结构,所以查询的时候依旧是直接锁定值,复杂度就是O(1)。

127.0.0.1:6379> sadd rockset rock
(integer) 1
127.0.0.1:6379> sadd rockset lily
(integer) 1
127.0.0.1:6379> sadd rockset lily
(integer) 0
127.0.0.1:6379> smembers rockset
1) "lily"
2) "rock"

[5]zset有序集合。和set几乎一样,不过每个元素都会关联一个double类型的数,这样就可以方便排序。同时,所关联的double类型的数允许重复。

127.0.0.1:6379> zadd rockzset 0.5 rock
(integer) 1
127.0.0.1:6379> zadd rockzset 0.6 lily
(integer) 1
127.0.0.1:6379> zadd rockzset 0.5 blaze
(integer) 1
127.0.0.1:6379> zrangebyscore rockzset 0 1
1) "blaze"
2) "rock"
3) "lily"

3.redis的键和常用命令
上边的所有容器都用到了键。redis在执行一些操作的时候,就需要对键进行处理(上述的5种结构示例中的键分别是,[1]name [2]user:1 [3]rocklist [4]rockset [5]rockzset)
[1]我们在删除一组数据的时候,可以直接删除键

127.0.0.1:6379> del rockzset
(integer) 1

[2]我们可以检测某个键存在与否

127.0.0.1:6379> exists rockzset
(integer) 0
127.0.0.1:6379> exists rockset
(integer) 1

[3]设置过期时间(这个是使用redis的重点之一。设置时间的格式有很多种)

127.0.0.1:6379> EXPIRE user:1 20
(integer) 1
127.0.0.1:6379> exists user:1
(integer) 1

20秒后

127.0.0.1:6379> exists user:1
(integer) 0

[4]查看keys (支持正则表达式)
查看已经存在的所有数据的key,就是keys *

127.0.0.1:6379> keys *
1) "rockset"
2) "rocklist"
3) "name"

[5]move 将数据转移到数据库 move key db

[6]PERSIST key 将过期时间移除

[7]PTTL(毫秒)/TTL(秒) key 返回所剩的过期时间

127.0.0.1:6379> set newname "rock"
OK
127.0.0.1:6379> keys *
1) "rockset"
2) "rocklist"
3) "newname"
4) "name"
127.0.0.1:6379> EXPIRE newname 120
(integer) 1
127.0.0.1:6379> pttl newname
(integer) 113201
127.0.0.1:6379> pttl newname
(integer) 105775
127.0.0.1:6379> persist newname
(integer) 1
127.0.0.1:6379> pttl newname
(integer) -1
127.0.0.1:6379>

[8]rename/renamenx(保证key的唯一性) 修改key的名称

[9]type key 返回key的类型

127.0.0.1:6379> type rocklist
list

4.待更新

Redis入门