一、 String类型
1.赋值语法:SET key value
127.0.0.1:6379> set name zhaoyunok
2.取值语法: GET key
127.0.0.1:6379> get name"zhaoyun"
3.设置多个键语法: MSET key value [key value …]
127.0.0.1:6379> mset k2 lisi k3 wangwuok
4.获取多个键值语法: MGET key [key …]
127.0.0.1:6379> mget k2 k31) "lisi"2) "wangwu"
5.删除语法:DEL key
127.0.0.1:6379> del k3(integer) 1127.0.0.1:6379> get k3(nil)
二、字符串数字的递增与递减
递增数字:当存储的字符串是整数时,
Redis
提供了一个实用的命令
INCR
,其作用是让当前键值递增,并返回递增后的值。 递增数字语法: INCR key
递减数值语法
: DECR key
增加指定的整数语法
: INCRBY key increment 减少指定的整数 语法
:DECRBY key decrement
1.递增
127.0.0.1:6379> incr num(integer) 1127.0.0.1:6379> incr num(integer) 2
2.递减
127.0.0.1:6379> decr num(integer) 1
3.指定步长
127.0.0.1:6379> incrby num2 2(integer) 2127.0.0.1:6379> incrby num2 3(integer) 5127.0.0.1:6379> decrby num2 2(integer) 3127.0.0.1:6379> decrby num2 1(integer) 2
三 、Hash散列
hash
叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。相当于是对象格式的存储 赋值语法: HSET key field value
127.0.0.1:6379> hset user1 username zhangsan(integer) 1127.0.0.1:6379> hset user1 username lisi(integer) 0
- 设置一个字段值, HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0.
1.取值语法: HGET key field
127.0.0.1:6379> hget user1 username"lisi"
2.设置多个字段语法: HMSET key field value [field value ...]
127.0.0.1:6379> hmset user1 password 123 age 20OK
3.取多个值语法: HMGET key field [field ...]
127.0.0.1:6379> hmget user1 password age1) "123"2) "20"
4.获取所有字段值语法:HGETALL key
127.0.0.1:6379> hgetall user11) "username"2) "lisi"3) "password"4) "123"5) "age"6) "20"
5.删除字段语法:HDEL key field [field ...]
127.0.0.1:6379> hdel user1 username(integer) 1127.0.0.1:6379> hgetall user11) "password"2) "123"3) "age"4) "20"
四、队列List
Redis
的
list
是采用来链表来存储
,
双向链表存储数据,特点:增删快、查询慢
(Linkedlist).
这个队列是有序的。
1.向列表右边增加元素 : RPUSH key value [value ...]
从列表左边弹出元素:
LPOP key(
临时存储,弹出后,
从队列中清除
)
127.0.0.1:6379> lpush alist a1 a2 123
(integer) 3127.0.0.1:6379> lpop alist"123"127.0.0.1:6379> lpop alist"a2"
2.向列表右边增加元素 : RPUSH key value [value ...]
从列表右边弹出元素:
RPOP key
127.0.0.1:6379> rpush blist a1 a2 345
(integer) 3127.0.0.1:6379> rpop blist"345"
3.获取列表中元素的个数: LLEN key
127.0.0.1:6379> llen blist(integer) 1
4.查看列表语法:LRANGE key start stop
127.0.0.1:6379> lrange blist 0 3
1) "a2"
五、Set集合
Set集合类型:无序、不可重复
1.增加元素语法:SADD key member [member ...]
获得集合中的所有元素 :
smembers key
127.0.0.1:6379> sadd ulist user1(integer) 1127.0.0.1:6379> sadd ulist user2(integer) 1127.0.0.1:6379> sadd ulist user3(integer) 1127.0.0.1:6379> smembers ulist1) "user2"2) "user3"3) "user1"
2.删除元素语法: SREM key member [member ...]
127.0.0.1:6379> srem ulist user2
(integer) 1
127.0.0.1:6379> smembers ulist1) "user3"2) "user1"
3.判断元素是否在集合中: SISMEMBER key member
127.0.0.1:6379> smembers ulist
1) "user3"2) "user1"127.0.0.1:6379> sismember ulist user2(integer) 0127.0.0.1:6379> sismember ulist user1(integer) 1
六、Zset有序集合
Sortedset
又叫
zset,
是有序集合,可排序的,但是唯一。
Sortedset
和
set
的不同之处,是会给
set
中的元素添加一个分数,然后通过这个分数进行排序。
1. 增加元素:ZADD key score member [score member ...]
127.0.0.1:6379> zadd num1 20 stu1 30 stu2 40 stu3
(integer) 3
- 向有序集合中加入一个元素和该元素的分数(score),如果该元素已经存在则会用新的分数替换原有的分数。
2.添加带分数:ZREVRANGE key start stop [WITHSCORES]
127.0.0.1:6379> zadd num1 10 stu4
(integer) 1127.0.0.1:6379> zrevrange num1 0 41) "stu3"2) "stu2"3) "stu1"4) "stu4"
3.获取元素的分数 :ZSCORE key member
127.0.0.1:6379> zscore num1 stu2
"30"
4.删除元素ZREM key member [member ...]
127.0.0.1:6379> zrem num1 stu2(integer) 1127.0.0.1:6379> zrevrange num1 0 41) "stu3"2) "stu1"3) "stu4"
5.获得元素的分数的可以在命令尾部加上WITHSCORES参数
127.0.0.1:6379> zrevrange num1 0 4 withscores1) "stu3"2) "40"3) "stu1"4) "20"5) "stu4"6) "10"
七、HyoperLogLog命令
HyperLogLog是一种使用随机化的算法,以少量内存提供集合中唯一元素数量的近似值。
HyperLogLog
可以接受多个元素作为输入,并给出输入元素的基数估算值:
- 基数:集合中不同元素的数量。比如 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基数就是 3。
- 估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合理的范围之内。
HyperLogLog
的优点是,即使输入元素的数量或者体积非常非常大,计算基数所需的空间总是固定的、并且是很小的。
在
Redis
里面,每个
HyperLogLog
键只需要花费
12 KB
内存,就可以计算接近
2^64
个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为
HyperLogLog
只会根据输入元素来计算基数,而不会储存输入元素本身,所以
HyperLogLog
不能像集合那样,返回输入的各个元素。
HyperLogLog
相关的一些基本命令。
示例:
redis 127.0.0.1:6379> PFADD mykey "redis"
1) (integer) 1redis 127.0.0.1:6379> PFADD mykey "java"1) (integer) 1redis 127.0.0.1:6379> PFADD mykey "mysql"1) (integer) 1redis 127.0.0.1:6379> PFCOUNT mykey(integer) 3
八、其他命令
1.keys返回满足给定pattern 的所有key
keys user* //查询以user开头的key
keys * // 查询所有的 key
2.exists确认一个key 是否存在,存在返回1
127.0.0.1:6379> exists num2 // 语法 :exists key(integer) 1127.0.0.1:6379> exists num23(integer) 0
3.del删除一个key
127.0.0.1:6379> del num1 // 语法 : del key 删除存在的 key 返回 1 ,不存在的 key 返回 0(integer) 1127.0.0.1:6379> del num23(integer) 0
4.rename重命名key:rename oldkey newkey
127.0.0.1:6379> rename k1 k11
OK127.0.0.1:6379> keys *1) "ulist"2) "k2"3) "user1"4) "num2"5) "clist"6) "k11"
5.type返回值的类型: type key
127.0.0.1:6379> type ulist
set127.0.0.1:6379> type k11string127.0.0.1:6379> type alistlist
6.EXPIRE key seconds
- 设置key的生存时间(单位:秒)key在多少秒后会自动删除
- TTL key 查看key剩余的生存时间
- PERSIST key 清除生存时间
127.0.0.1:6379> set a1 123
OK127.0.0.1:6379> get a1"123"127.0.0.1:6379> expire a1 60(integer) 1127.0.0.1:6379> ttl a1(integer) 56127.0.0.1:6379> ttl a1(integer) 51127.0.0.1:6379> ttl a1(integer) 47
7. 获取服务器信息和统计:info
8.删除当前选择数据库中的所有key:flushdb
9.删除所有数据库中的所有key:flushall
九、Redis的多数据库
一个
redis
实例
key
包括多个数据库,客户端可以指定连接某个
redis
实例的哪个数据库,就好比一个
mysql
中创建多个数据库,客户端连接时指定连接哪个数据库。
一个
redis
实例最多可提供
16
个数据库,下标从
0-15
,客户端默认连接第
0
号数据库,也可以通过
select选择连接哪个数据库,如下连接1
号库
:
换到0数据库: