因为之前用的文本文档作的笔记,这次是将其记录在博客上,所以只能以代码的形式规范格式了,各位看官见谅。 --------来了,小老弟
一、String类型操作
赋值操作:
set key value 如果给key再次赋值,新值会覆盖原值
取值操作:
get key 无该键,返回(nil)
删除操作:
del key 返回值为 integer(1),表示删除了一条值
如果无法删值,可能是因为强制关闭redis快照导致不能持久化,处理办法
config set stop-writes-on-bgsave-error no
取值并赋值:
getset key value 先取值,再赋值
自增
incr key incr一个不存在的值,redis会自己创建一个键,并设置其值为0
incrby key step 增加固定长度
自减
decr key decr一个不存在的值,redis会自己创建一个键,并设置其值为0
decrby key step 减少固定长度
拼接字符串
append key value key不存在,系统会自动创建空字符串
127.0.0.1:6379> append password 123
(integer) 3 //表明该字符串长度为3
127.0.0.1:6379> append password 456
(integer) 6 //表明该字符串长度为6
*自增自减只能对数字进行操作,字符串如果为字母,不能进行该操作
二、Hash类型操作
赋值:
1.设置一个字段
hset key field value
127.0.0.1:6379> hset hash1 uname zhangsan
(integer) 1
127.0.0.1:6379> hset hash1 uname lisi
(integer) 0
*再次设置无效
2.设置多个字段
hmset key field value [field2 value2] [field3 value3]
127.0.0.1:6379> hmset hash2 uname zhangsan age 18 sex man
取值:
1.取出单个值
127.0.0.1:6379> hget hash2 uname
2.取出多个值
127.0.0.1:6379> hmget hash2 uname age
1) "zhangsan"
2) "18"
3.取出所有字段名和值
127.0.0.1:6379> hgetall hash2
1) "uname"
2) "zhangsan"
3) "age"
4) "18"
5) "sex"
6) "man"
删除:
1.hdel key field
如果key中删除完无字段时,整个键值对会被删除
127.0.0.1:6379> hdel hash1 uname
(integer) 1
2.删除整个哈希值
del key
增加数字
127.0.0.1:6379> hmset hash1 uname zhangsan age 18
OK
127.0.0.1:6379> hincrby hash1 age 10
(integer) 28
判断字段是否存在
127.0.0.1:6379> hexists hash1 uname
(integer) 1
127.0.0.1:6379> hexists hash1 u
(integer) 0
查询字段数量
127.0.0.1:6379> hlen hash1
(integer) 2
获得所有字段 获取所有value
127.0.0.1:6379> hkeys hash1
1) "uname"
2) "age"
127.0.0.1:6379> hvals hash1
1) "zhangsan"
2) "28"
三、List类型操作:
1.做大数据集合的增删
2.任务队列
赋值:
lpush key values[value1, value2, ...]:从左侧开始添加元素
rpush key values[value1, value2, ...]:从右侧开始添加元素
取值:
lrange key start stop: 从start开始取到stop,start、stop值也可以为附属,-1则表示链表尾部的元素
*查询所有元素 lrange key 0 -1
127.0.0.1:6379> lrange list1 0 3
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lrange list1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
删除值:
lpop key :删除第一个元素
rpop key :删除最后的元素
*链表元素被删除完时,整个键值对也会被删除,redis不允许空集现象存在
获取元素个数:
llen key :返回元素个数
删除某种元素:
lrem key count value :删除count个值为value的元素,count为正数,从头到尾删除,如果count为负数,从尾到头删除,一般不建议使用该命令,因为 效率极低
127.0.0.1:6379> rpush list3 a b c a b c a b
(integer) 8
127.0.0.1:6379> lrem list3 0 a
(integer) 3
127.0.0.1:6379> lrange list3 0 -1
1) "b"
2) "c"
3) "b"
4) "c"
5) "b"
替换操作(效率极低):
127.0.0.1:6379> rpush list3 a b c a b c a b
(integer) 8
127.0.0.1:6379> lset list3 2 aaaaaa
OK
127.0.0.1:6379> lrange list3 0 -1
1) "a"
2) "b"
3) "aaaaaa"
4) "a"
5) "b"
6) "c"
7) "a"
8) "b"
在索引前\后插入元素(效率极低):
linsert key BEFORE|AFTER pivot value
127.0.0.1:6379> linsert list3 before aaaaaa cccccc
(integer) 9
127.0.0.1:6379> lrange list3 0 -1
1) "a"
2) "b"
3) "cccccc"
4) "aaaaaa"
5) "a"
6) "b"
7) "c"
8) "a"
9) "b"
*rpoplpush resource destination(用做任务队列):
127.0.0.1:6379> RPUSH list1 a b c d
(integer) 4
127.0.0.1:6379> RPOPLPUSH list1 list2
"d"
127.0.0.1:6379> LRANGE list1 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> LRANGE list2 0 -1
1) "d"
循环列表:
127.0.0.1:6379> RPUSH list1 a b c d
(integer) 4
127.0.0.1:6379> RPOPLPUSH list1 list1
"d"
127.0.0.1:6379> RPOPLPUSH list1 list1
"c"
127.0.0.1:6379> LRANGE list1 0 -1
1) "c"
2) "d"
3) "a"
4) "b"
四、Set类型操作:
set特点:有序不重复
涉及两个大数据集合的并集、交集、差集操作
赋值:
sadd key member [member ...]
127.0.0.1:6379> sadd set1 a b c d a
(integer) 4(不能重复)
删除:
SREM key member [member ...]
127.0.0.1:6379> SREM set1 b d
(integer) 2
取值:
SMEMBERS key
127.0.0.1:6379> SMEMBERS set1
1) "a"
2) "c"
判断是否存在某元素:
SISMEMBER key member
127.0.0.1:6379> SISMEMBER set1 a
(integer) 1
127.0.0.1:6379> SISMEMBER set1 aaa
(integer) 0
差集运算:
127.0.0.1:6379> SADD set1 a b c d
(integer) 4
127.0.0.1:6379> SADD set2 b e
(integer) 2
127.0.0.1:6379> SDIFF set1 set2 (属于set1,不属于set2)
1) "a"
2) "c"
3) "d"
交集运算:
127.0.0.1:6379> SINTER set1 set2 (set1,set2无顺序)
1) "b"
并集运算:
127.0.0.1:6379> SUNION set1 set2
1) "c"
2) "d"
3) "b"
4) "a"
5) "e"
* 将交并补运算结果存储进destination
SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]
127.0.0.1:6379> SUNIONSTORE set3 set1 set2
(integer) 5
127.0.0.1:6379> SMEMBERS set3
1) "c"
2) "d"
3) "b"
4) "a"
5) "e"
获取set成员数量:
SCARD key
127.0.0.1:6379> SCARD set1
(integer) 4
随机返回set中的成员:
SRANDMEMBER key
127.0.0.1:6379> SRANDMEMBER set1
"c"
五、有序set: 有序set集合操作,多用于排行榜、微博热搜等
赋值:ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
zadd set1 5000 xiaoming 1000 xiaohong 500 xiaozhang
取值:ZSCORE key member
127.0.0.1:6379> ZSCORE set1 xiaoming
"5000"
获取集合中元素个数:ZCARD key
127.0.0.1:6379> ZCARD set1
(integer) 3
删除元素:ZREM key member [member ...]
127.0.0.1:6379> ZREM set1 xiaoming xiaohong
(integer) 2
范围查询:ZRANGE key start stop [WITHSCORES] 从小到大
127.0.0.1:6379> ZRANGE set1 0 -1
1) "xiaozhang"
2) "xiaohong"
3) "xiaoming"
127.0.0.1:6379> ZRANGE set1 0 -1 WITHSCORES
1) "xiaozhang"
2) "500"
3) "xiaohong"
4) "1000"
5) "xiaoming"
6) "5000"
*ZREVRANGE key start stop [WITHSCORES] 从大到小
按照排名范围进行删除:ZREMRANGEBYRANK key start stop
按照分数范围进行删除:ZREMRANGEBYSCORE key min max
按照范围进行排名(可以加限制):ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
给元素增加分数:ZINCRBY key increment member
计算分数段之间的成员数:ZCOUNT key min max
查询排名:
ZRANK key member
ZREVRANK key member
六、通用命令:
keys pattern:获取所有与pattern匹配的key,返回所有与该
通配符:* ?
127.0.0.1:6379> keys *name*
1) "username"
2) "name"
127.0.0.1:6379> keys ????
1) "name"
del key1 key2...: 删除多个键
exists key :判断key值是否存在,返回1,存在,返回0,不存在
rename key newkey :为当前key重新命名
type key :获取key的值类型
expire key seconds :设置key的生存时间(单位为s)
ttl key :查看key还剩多长生存时间,key过期了,redis会将其删除
*未设置过期时间,永久的键值,其生存时间为-1
消息订阅与发布:
SUBSCRIBE channel [channel ...]
PSUBSCRIBE pattern [pattern ...]
PUBLISH channel message
多数据库:
redis默认有16个数据库, 0 1 2 ...... 15
默认操作发生在0号数据库中
切换数据库: select 数据库名
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 2
OK
数据库和数据库之间不能共享键值对
把某个键值对进行数据库的移植:move key db
慎用:
清空当前数据库: flushdb
清空服务器所有数据库: flushall
七、事务: 为了进行redis语句的批量化执行
multi: 开启事务用于标记事务的开始,其后执行的命令都将被存入命令队列,直到执行exec时,这些命令才会被原子的执行,类似于关系数据库中的begin transcation
exec: 提交事务,类似于关系数据库中的commit 批量化执行
discard: 事务回滚,类似于关系数据库中的rollback 不执行操作
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set username zhangsan
QUEUED
127.0.0.1:6379> get username
QUEUED
127.0.0.1:6379> exec
1) OK
2) "zhangsan"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set password 123
QUEUED
127.0.0.1:6379> get password
QUEUED
127.0.0.1:6379> discard
OK