1. Redis中的键
Redis是键值型数据库,Redis中的键只有一个类型,就是字符串。
2. Redis中的值
Redis值支持的类型有以下几种:
字符串类型 string
列表类型 list
集合类型 set
有序集合类型 sorted set
哈希类型 hash
HyperLogLog类型
Geo类型
3. 字符串类型string
1、字符串类型的存取操作,注意set执行成功会返回OK。
127.0.0.1:6379> set name "maoge"
OK
127.0.0.1:6379> get name
"maoge"
2、如果键不存在,则返回nil。
127.0.0.1:6379> get test
(nil)
3、使用strlen可以获取字符串长度,当键不存在时返回0。
127.0.0.1:6379> strlen name
(integer) 5
127.0.0.1:6379> strlen test
(integer) 0
4、如果键已存在,再次执行set,则覆盖键对应的值。
127.0.0.1:6379> set name "maoge"
OK
127.0.0.1:6379> set name "halo"
OK
127.0.0.1:6379> get name
"halo"
5、使用setnx,当键不存在时为其设值,此时返回1;当键已存在则不改变键对应的值,返回0。
127.0.0.1:6379> setnx country "china"
(integer) 1
127.0.0.1:6379> get country
"china"
127.0.0.1:6379> setnx country "usa"
(integer) 0
127.0.0.1:6379> get country
"china"
6、使用mset/mget可以进行批量操作,这样可以节省客户端和服务器之间的通信开销。
127.0.0.1:6379> mset age "12" sex "man"
OK
127.0.0.1:6379> mget age sex
1) "12"
2) "man"
4. 列表类型list
常用操作如下:
lrange 显示指定索引范围的元素(从0开始算)
lpush 左侧插入元素,返回插入后列表长度
rpush 右侧插入元素,返回插入后列表长度
lpop 左侧弹出元素
rpop 右侧弹出元素
注意,向不存在的键插入元素,Redis会自动创建list;如果列表为空,Redis会自动回收该键。实例如下:
127.0.0.1:6379> lrange studetns 0 1
(empty list or set)
127.0.0.1:6379> lpush students "zhangsan"
(integer) 1
127.0.0.1:6379> rpush students "lisi"
(integer) 2
127.0.0.1:6379> lrange students 0 1
1) "zhangsan"
2) "lisi"
127.0.0.1:6379> lpop students
"zhangsan"
127.0.0.1:6379> rpop students
"lisi"
127.0.0.1:6379> lrange students 0 1
(empty list or set)
5. 哈希类型hash
注意Redis数据集本身即是一个hash结构,类似于java中的map。
此处的哈希类型,指的是,Redis键对应的值的部分,依然是一个哈希类型。
1、hset设置单个哈希字段的值
127.0.0.1:6379> hset city beijing "001"
(integer) 1
127.0.0.1:6379> hset city shanghai "002"
(integer) 1
2、hget获取单个哈希字段对应的值
127.0.0.1:6379> hget city beijing
"001"
3、hexists测试哈希字段是否存在
127.0.0.1:6379> hexists city beijing
(integer) 1
127.0.0.1:6379> hexists city tianjin
(integer) 0
4、hgetall获取哈希所有字段值
127.0.0.1:6379> hgetall city
1) "beijing"
2) "001"
3) "shanghai"
4) "002"
5、删除哈希字段
127.0.0.1:6379> hdel city beijing
(integer) 1
127.0.0.1:6379> hget city beijing
(nil)
6、批量设置、获取哈希字段
127.0.0.1:6379> hmset city nanjing "003" shenzhen "004"
OK
127.0.0.1:6379> hmget city nanjing shenzhen
1) "003"
2) "004"