Redis个人学习笔记

set test1 hello
get test1
dbsize:检查key的总数
mset k1 v1 k2 v2 k3 v3 k4 v4 :一次性添加多个key-value
exists a: 检查key是否存在,存在返回1,不存在返回0
del a : 删除key,可以删除多个key
sadd myset a b c d e f g : 一次性向一个key集合添加多个元素
expire key seconds : 设置key在seconds秒后过期
persist test1 : 去掉过期时间
ttl key :查看key剩余过期时间,-1表示key存在,但没有过期时间,返回-2 表示 key已经不存在了
type key:返回key的类型

String(字符串)

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

常用命令:set、get、decr、incr、mget等。

注意:一个键最大能存储512MB。

Hash(哈希)

Redis hash 是一个键值(key=>value)对集合;是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 2的32次方- 1 键值对(40多亿)。

常用命令:hget、hset、hgetall,hmset,hkeys,hvals,hlen,hexists,hincrbyfloat,hdel等。

应用场景:存储一些结构化的数据,比如用户的昵称、年龄、性别、积分等,存储一个用户信息对象数据。

List(列表)

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

list类型经常会被用于消息队列的服务,以完成多程序之间的消息交换。

常用命令:lpush、rpush、lpop、rpop、lrange等。

blpop / brpop : BLPOP/BRPOP keyname [keyname …] timeout 从第一个非空列表中弹出最左 / 右 端的元素,如果没有,则在timeout秒之内阻塞并等待可弹出的元素出现

127.0.0.1:6379> lrange blpop-list-key 0 -1
1) "item1"
2) "item2"
127.0.0.1:6379> rpush blpop-list-key2 item3
(integer) 1
127.0.0.1:6379> lrange blpop-list-key 0 -1
1) "item1"
2) "item2"
127.0.0.1:6379> lrange blpop-list-key2 0 -1
1) "item3"
127.0.0.1:6379> blpop blpop-list-key blpop-list-key2 1
1) "blpop-list-key"
2) "item1"
127.0.0.1:6379> blpop blpop-list-key blpop-list-key2 1
1) "blpop-list-key"
2) "item2"
127.0.0.1:6379> blpop blpop-list-key blpop-list-key2 1
1) "blpop-list-key2"
2) "item3"
127.0.0.1:6379> blpop blpop-list-key blpop-list-key2 1
(nil)
(1.14s)

brpoplpush source-key dest-key:移动元素

列表最多可存储 2的32次方- 1 元素 (4294967295, 每个列表可存储40多亿)。

Set(集合)

Redis的Set是string类型的无序集合。和列表一样,在执行插入和删除和判断是否存在某元素时,效率是很高的。集合最大的优势在于可以进行交集并集差集操作。Set可包含的最大元素数量是4294967295。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
元素数据不会重复。

应用场景:

1、利用交集求共同好友。

2、利用唯一性,可以统计访问网站的所有独立IP。

常用命令:sadd、spop、smembers、sunion等。
1.SADD keyname item [item …] 将一个或多个元素添加到集合;
2.SMEMBERS keyname 返回集合包含的所有元素;
3.SISMEMBER keyname item 检查元素item是否存在于集合keyname中;
4.SREM keyname item [item …] 从集合里删除一个或多个元素;
5.SCARD keyname 返回集合包含元素的数量;

127.0.0.1:6379> sadd set-key item
(integer) 1
127.0.0.1:6379> sadd set-key item2
(integer) 1
127.0.0.1:6379> sadd set-key item3
(integer) 1
127.0.0.1:6379> smembers set-key
1) "item3"
2) "item2"
3) "item"
127.0.0.1:6379> sadd set-key item
(integer) 0
127.0.0.1:6379> smembers set-key item4
(error) ERR wrong number of arguments for 'smembers' command
127.0.0.1:6379> sismember set-key item4
(integer) 0
127.0.0.1:6379> sismember set-key item3
(integer) 1
127.0.0.1:6379> srem set-key item
(integer) 1
127.0.0.1:6379> smembers set-key
1) "item3"
2) "item2"
127.0.0.1:6379> sismember set-key item4
(integer) 0
127.0.0.1:6379>

交集/并集/差集命令主要有:SDIFF、SDIFFSTORE、SINTER、SINTERSTORE、SUNION、SUNIONSTORE。
1.SDIFF keyname [key-name …] 返回存在于第1个集合,不存在于其他集合的元素(差集运算);
2.SDIFFSTORE SDIFFSTORE destkey keyname [key-name …] 将存在于第1个集合,不存在于其他集合的元素(差集运算)存储到destkey集合;
3.SINTER keyname [key-name …] 返回同时存在于所有集合中的元素(交集运算);
4.SINTERSTORE destkey keyname [key-name …] 将同时存在于所有集合中的元素(交集运算)存储到destkey集合;
5.SUNION keyname [key-name …] 返回至少存在于一个集合中的元素(并集运算);
6.SUNIONSTORE destkey keyname [key-name …] 将至少存在于一个集合中的元素(并集运算)存储到destkey集合

集合中最大的成员数为 2的32次方 - 1(4294967295, 每个集合可存储40多亿个成员)。

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。
常用命令:zadd、zrange、zrem、zcard等。

当你需要一个有序的并且不重复的集合列表时,那么可以选择sorted set数据结构。

获取有序集合里元素有以下2个命令:

ZRANGE 语法:ZRANGE keyname start stop [WITHSCORES] 功能:返回有序集合中排名介于start和stop之间的成员,如果给定了可选的WITHSCORES选项, 那么会将成员的分值一并返回
ZRANGEBYSCORE 语法:ZRANGEBYSCORE keyname min max [WITHSCORES] [LIMIT offset count] 功能:返回有序集合中分值介于min和max之间的成员,如果给定了可选的WITHSCORES选项, ​ 那么会将成员的分值一并返回

ZCARD命令来获取有序集合包含的成员数量。
ZCOUNT命令来获取有序集合中分值处于某个区间的成员数量
ZINCRBY某个成员的分值加上个整数
ZREM命令来删除有序集合中的一个或多个成员

应用举例:

(1)例如存储全班同学的成绩,其集合value可以是同学的学号,而score就可以是成绩。

(2)排行榜应用,根据得分列出topN的用户等。

对KEY操作的命令:

1、exists(key):确认一个key是否存在

2、del(key):删除一个key

3、type(key):返回值的类型

4、keys(pattern):返回满足给定pattern的所有key

5、randomkey:随机返回key空间的一个

6、keyrename(oldname, newname):重命名key

7、dbsize:返回当前数据库中key的数目

8、expire:设定一个key的活动时间(s)

9、ttl:获得一个key的活动时间

10、move(key, dbindex):移动当前数据库中的key到dbindex数据库

11、flushdb:删除当前选择数据库中的所有key

12、flushall:删除所有数据库中的所有key

对String操作的命令:

1、set(key, value):给数据库中名称为key的string赋予值value

2、get(key):返回数据库中名称为key的string的value

3、getset(key, value):给名称为key的string赋予上一次的value

4、mget(key1, key2,…, key N):返回库中多个string的value

5、setnx(key, value):添加string,名称为key,值为value

6、setex(key, time, value):向库中添加string,设定过期时间time

7、mset(key N, value N):批量设置多个string的值

8、msetnx(key N, value N):如果所有名称为key i的string都不存在

9、incr(key):名称为key的string增1操作

10、incrby(key, integer):名称为key的string增加integer

11、decr(key):名称为key的string减1操作

12、decrby(key, integer):名称为key的string减少integer

13、append(key, value):名称为key的string的值附加value

14、substr(key, start, end):返回名称为key的string的value的子串

对List操作的命令:

1、rpush(key, value):在名称为key的list尾添加一个值为value的元素

2、lpush(key, value):在名称为key的list头添加一个值为value的 元素

3、llen(key):返回名称为key的list的长度

4、lrange(key, start, end):返回名称为key的list中start至end之间的元素

5、ltrim(key, start, end):截取名称为key的list

6、lindex(key, index):返回名称为key的list中index位置的元素

7、lset(key, index, value):给名称为key的list中index位置的元素赋值

8、lrem(key, count, value):删除count个key的list中值为value的元素

9、lpop(key):返回并删除名称为key的list中的首元素

10、rpop(key):返回并删除名称为key的list中的尾元素

11、blpop(key1, key2,… key N, timeout):lpop命令的block版本。

12、brpop(key1, key2,… key N, timeout):rpop的block版本。

13、rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

对Set操作的命令:

1、sadd(key, member):向名称为key的set中添加元素member

2、srem(key, member) :删除名称为key的set中的元素member

3、spop(key) :随机返回并删除名称为key的set中一个元素

4、smove(srckey, dstkey, member) :移到集合元素

5、scard(key) :返回名称为key的set的基数

6、sismember(key, member) :member是否是名称为key的set的元素

7、sinter(key1, key2,…key N) :求交集

8、sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合

9、sunion(key1, (keys)) :求并集

10、sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合

11、sdiff(key1, (keys)) :求差集

12、sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合

13、smembers(key) :返回名称为key的set的所有元素

14、srandmember(key) :随机返回名称为key的set的一个元素

对Hash操作的命令

1、hset(key, field, value):向名称为key的hash中添加元素field

2、hget(key, field):返回名称为key的hash中field对应的value

3、hmget(key, (fields)):返回名称为key的hash中field i对应的value

4、hmset(key, (fields)):向名称为key的hash中添加元素field

5、hincrby(key, field, integer):将名称为key的hash中field的value增加integer

6、hexists(key, field):名称为key的hash中是否存在键为field的域

7、hdel(key, field):删除名称为key的hash中键为field的域

8、hlen(key):返回名称为key的hash中元素个数

9、hkeys(key):返回名称为key的hash中所有键

10、hvals(key):返回名称为key的hash中所有键对应的value

11、hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值