redis-阅读笔记

前言

简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

特点

1.支持持久化
2.支持list,set,zset,hash等结构存储
3.支持主从模式的数据备份

优势

1.性能高
2.数据类型丰富
3.原子性
4.特定丰富

修改配置

CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

redis数据类型

String(字符串)

实例:

1
2
3
4
5
127.0.0.1:6379> set name "hyb"
OK
127.0.0.1:6379> get name
"hyb"
127.0.0.1:6379>

Hash(哈希)—适合存储对象

redis hash 是一个键值对集合。
实例:

1
2
3
4
5
6
7
8
127.0.0.1:6379> hmset student:1 stuName hyb sex male
OK
127.0.0.1:6379> hgetall student:1
1) "stuName"
2) "hyb"
3) "sex"
4) "male"
127.0.0.1:6379>

list(列表)

按照插入顺序排序的元素集合。集合内元素可以不唯一
lpush key member
实例:

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> lpush testList a
(integer) 1
127.0.0.1:6379> lpush testList b
(integer) 2
127.0.0.1:6379> lpush testList b
(integer) 3
127.0.0.1:6379> lrange testList 0 2
1) "b"
2) "b"
3) "a"

set(集合)-无序集合

集合内元素唯一
sadd key member
实例:

1
2
3
4
5
6
7
8
9
127.0.0.1:6379> sadd  testSet a
(integer) 1
127.0.0.1:6379> sadd testSet b
(integer) 1
127.0.0.1:6379> sadd testSet b
(integer) 0
127.0.0.1:6379> smembers testSet
1) "b"
2) "a"

zset -有序集合

每个元素都会关联一个double类型的分数。redis通过分数来进行排序
zadd key score member

1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> zadd testZset 1 aa
(integer) 1
127.0.0.1:6379> zadd testZset 2 bb
(integer) 1
127.0.0.1:6379> zadd testZset 3 bb
(integer) 0
127.0.0.1:6379> zadd testZset 4 qw
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE testZset 0 5
1) "aa"
2) "bb"
3) "qw"

redis 命令

连接远程redis服务器

1
redis-cli  -h host -p port -a password

keys 命令

del key

key存在是删除key

DUMP KEY

序列化给定key,并返回被序列化的值

EXISTS KEY

检查给定key 是否存在

EXPIRE KEY SECONDS

为key设置过期时间

EXPIREAT KEY TIMESTAMP
时间参数为unix时间戳
EXPIRE KEY MILLISECONDS

设置key的过期时间,以毫秒计

KEYS pattern

查找所有符合给定模式(pattern)的key

MOVE KEY DB

将当前数据库的key移动到给定的数据录db当中

PERSIST KEY

移除key的过期时间

PTTL KEY

返回key的剩余过期时间,毫秒为单位

TTL key

返回key的剩余货期时间,秒为单位

RANDOMKEY

从当前数据库中随机返回一个key

RENAME KEY NEWKEY

修改key的名称

RENAMENX KEY NEWKEY

仅当newkey不存在时,将key改名为newkey

TYPE KEY

返回key所存储的值的类型

String 命令

SET KEY VALUE

设置指定key的值

GET KEY

获取指定key的值

GETRANGE KEY START END

返回key中字符串值的子字符

GETSET KEY VALUE

将给定的key的值设为value,并返回key的旧值。

MGET KEY1 KEY2

获取所有给定key 的值

SETEX KEY SECONDS VALUE

将值value关联到key,并将key的过期时间设为seconds

SETNX KEY VALUE

只有在key不存在时设置key的值

SETRANGE KEY OFFSET VALUE

用value 参数覆写给定key所存储的字符串值,从偏移量offset开始

SETLEN KEY

返回key所存储的字符串的长度

MSET KEY VALUE[KEY VALUE]

同时设置一个或多个key-value对

MSETNX KEY VALUE[KEY VALUE]

同时设置一个或多个key-value对,当且仅当所有给定key都不存在

APPEND KEY VALUE

如果key已经存在并且是一个字符串,append命令将value添加到key原来值的末尾

hash

HDEL KEY FIELD1 [FIELD2]

删除一个或者多个hash表字段

HEXISTS KEY FIELD

查看hash表中指定字段是否存在

HGET KEY FIELD

获取存储在hash中指定字段的值

HGETALL KEY

获取hash中指定key所有字段和值

HKEYS KEY

获取所有hash表中的字段

HLEN KEY

获取hash表中字段的数量

HMGET KEY FIELD1 [FIELD2]

获取所有给定字段的值

HMSET KEY FIELD1 VALUE1 [FIELD2 VALUE2]

同时将多个field-value对设置到hash表key中

HSET KEY FIELD VALUE

将哈希表key中的字段field的值设为value

HSETNX KEY FIELD VALUE

只有在字段field不存在时,设置哈希表字段的值

HVALS KEY

获取hash表中所有值

LIST

BLPOP KEY1 [KEY2] timeout

移出并获取列表的第一个元素,如果列表中没有元素会阻塞列表直到等待超时或者发现可弹出元素为止

set

zset

其他

发布订阅

事物

1
2
3
4
NULTI
redis command
......
EXEC

脚本

EVAL script numkeys key [key …] arg [arg …]

执行lua脚本

EVALSHA sha1 numkeys key [key …] arg [arg …]

执行lua脚本

结束语

守望 wechat
关注公众号[编程珠玑]获取更多原创技术文章
出入相友,守望相助!