redis 基础笔记

string操作
SET设置值和GET读取值

127.0.0.1:6379> SET andy redis
OK
127.0.0.1:6379> GET andy
"redis"

哈希(Hash)
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
HMSET 设置值和 HGETALL读取值

127.0.0.1:6379>  HMSET andy name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
127.0.0.1:6379>  HGETALL andy
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"

HGET key field :获取存储在哈希表中指定字段的值

127.0.0.1:6379> HGET andy 'name'
"redis tutorial"

HKEYS key :获取所有哈希表中的字段

127.0.0.1:6379> HKEYS andy
1) "name"
2) "description"
3) "likes"
4) "visitors"

HMGET key field1 [field2] :获取所有给定字段的值

127.0.0.1:6379> HMGET andy 'name' 'likes'
1) "redis tutorial"
2) "20"

列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

127.0.0.1:6379> LPUSH andy redis
(integer) 1
127.0.0.1:6379> LPUSH andy mongo python java node.js 
(integer) 5
127.0.0.1:6379> LPUSH andy kafka
(integer) 6
127.0.0.1:6379> LPUSH andy scala
(integer) 7
127.0.0.1:6379> LRANGE andy 0 10
1) "scala"
2) "kafka"
3) "node.js"
4) "java"
5) "python"
6) "mongo"
7) "redis"

BLPOP key1 [key2 ] timeout :移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

127.0.0.1:6379> blpop andy 0 1
1) "andy"
2) "scala"
127.0.0.1:6379> LRANGE andy 0 10
1) "kafka"
2) "node.js"
3) "java"
4) "python"
5) "mongo"
6) "redis"

BRPOP key1 [key2 ] timeout :移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

127.0.0.1:6379> brpop andy 0 1
1) "andy"
2) "redis"
127.0.0.1:6379> LRANGE andy 0 10
1) "kafka"
2) "node.js"
3) "java"
4) "python"
5) "mongo"

LINDEX key index:通过索引获取列表中的元素

127.0.0.1:6379> LINDEX andy 3
"python"

LLEN key :获取列表长度

127.0.0.1:6379> LLEN andy 
(integer) 5

LPOP key :移出并获取列表的第一个元素

127.0.0.1:6379> lpop andy
"kafka"

LPUSH key value1 [value2] :将一个或多个值插入到列表头部,和LPUSHX功能一样,但LPUSHX要求列表必须存在。

127.0.0.1:6379> LPUSH andy ruby prel php
(integer) 7
127.0.0.1:6379> LRANGE andy 0 10
1) "php"
2) "prel"
3) "ruby"
4) "node.js"
5) "java"
6) "python"
7) "mongo"
127.0.0.1:6379> LPUSHX run Object-C
(integer) 0

LSET key index value :通过索引设置列表元素的值

127.0.0.1:6379> LSET andy 4 Object-C
OK
127.0.0.1:6379> LRANGE andy 0 10
1) "php"
2) "prel"
3) "ruby"
4) "node.js"
5) "Object-C"
6) "python"
7) "mongo"

RPOP key :移除并获取列表最后一个元素

127.0.0.1:6379> RPOP andy
"mongo"

集合(Set)
Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)
SADD key member1 [member2] :向集合添加一个或多个成员且不可重复

127.0.0.1:6379> SADD andy mongo python java node.js 
(integer) 4
127.0.0.1:6379> SADD andy mysql
(integer) 1
127.0.0.1:6379> SMEMBERS andy
1) "node.js"
2) "java"
3) "mongo"
4) "python"
5) "mysql"
127.0.0.1:6379> SADD andy mysql
(integer) 0

SCARD key :获取集合的成员数

127.0.0.1:6379> SCARD andy
(integer) 5

SISMEMBER key member :判断 member 元素是否是集合 key 的成员

127.0.0.1:6379> SISMEMBER andy python
(integer) 1
127.0.0.1:6379> SISMEMBER andy kafka
(integer) 0

SPOP key :移除并返回集合中的一个随机元素

127.0.0.1:6379> spop andy
"node.js"
127.0.0.1:6379> SMEMBERS andy
1) "java"
2) "mysql"
3) "mongo"
4) "python"

SRANDMEMBER key [count] :返回集合中一个或多个随机数

127.0.0.1:6379> SRANDMEMBER andy 2
1) "java"
2) "mysql"

SREM key member1 [member2] :移除集合中一个或多个成员

127.0.0.1:6379> SREM andy python java
(integer) 2
127.0.0.1:6379> SMEMBERS andy
1) "mysql"
2) "mongo"

SSCAN key cursor [MATCH pattern] [COUNT count] :迭代集合中的元素

127.0.0.1:6379> sscan andy 0 match *g*
1) "0"
2) 1) "mongo"
127.0.0.1:6379> sscan andy 0 match m*
1) "0"
2) 1) "mongo"
   2) "mysql"

有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

127.0.0.1:6379> ZADD andy 1 redis
(integer) 1
127.0.0.1:6379> ZADD andy 2 mongo 
(integer) 1
127.0.0.1:6379> ZADD andy 4 mysql  
(integer) 1
127.0.0.1:6379> ZADD andy 3 sqlite3  
(integer) 1
127.0.0.1:6379> ZRANGE andy 0 10 WITHSCORES
1) "redis"
2) "1"
3) "mongo"
4) "2"
5) "sqlite3"
6) "3"
7) "mysql"
8) "4"

ZADD key score1 member1 [score2 member2] :向有序集合添加一个或多个成员,或者更新已存在成员的分数

127.0.0.1:6379> ZADD andy 3 orcale
(integer) 1
127.0.0.1:6379> ZADD andy 5 java 6 python
(integer) 2
127.0.0.1:6379> ZRANGE andy 0 10 WITHSCORES
 1) "redis"
 2) "1"
 3) "mongo"
 4) "2"
 5) "orcale"
 6) "3"
 7) "sqlite3"
 8) "3"
 9) "mysql"
10) "4"
11) "java"
12) "5"
13) "python"
14) "6"

ZCARD key :获取有序集合的成员数

127.0.0.1:6379> ZCARD andy
(integer) 7

查看键的数据类型

127.0.0.1:6379> type andy
zset

EXPIRE命令:
格式: EXPIRE key seconds
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。

127.0.0.1:6379> EXPIRE andy 100     # 设置过期时间为 100 秒
(integer) 1
127.0.0.1:6379> TTL andy            # 查看剩余生存时间
(integer) 23
127.0.0.1:6379> EXPIRE andy 30000   # 更新过期时间
(integer) 1
127.0.0.1:6379> TTL andy
(integer) 29996
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值