首页 > 代码库 > 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入门