1、是什么
- 开源的、高性能键值对内存数据库
- NoSQL数据库
- 单线程的
2、value数据类型
- 字符串类型(string)
- 散列类型(hash)
- 列表类型(list)
- 集合类型(set)
- 有序集合类型(sortedset、zset)
2.1 string
set key value
:设置学号010101的是张三
get key
:查询学号是010101的同学姓名
getset key newvalue
:查询学号010101同学姓名,并且重新赋值:李四
setnx key value
:如果学号010102还没有指定同学,那么把王五赋值给它;如果已经指定,那么就算了
exists
:查一下是否有学号为010103这个同学
2.2 hash
一次设置一个字段值:hset key field value
hset user username zhangsan
hset user age 12
一次设置多个字段值:hmset key field value [field value …]
hmset user username zhangsan age 12
当字段不存在时赋值:hsetnx key field value
hsetnx user age 30
获取一个字段值:hget key field
获取多个字段值:hmget key field [field …]
获取所有字段值:hgetall key
删除一个或多个字段:hdel key field [field …]
2.2.1 内部编码
哈希类型内部编码有两种:
- ziplist(压缩列表):当哈希类型元素的个数小于hash-max-ziplist-entries配置,默认是512,同时所有值都小于hash-max-ziplist-value配置时,默认是64字节,Redis会使用ziplist作为哈希类型的内部实现,ziplist使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比hashtable更加优秀。
- hashtable(哈希表):当哈希类型无法满足ziplist的条件时,Redis会使用hashtable作为哈希的内部实现,因为此时ziplist的读写效率会下降
2.3 list
可以存储一个有序的字符串列表
lpush key value [value …]
rpush key value [value …]
lrange key start stop:索引从0开始,-1代表最后边的一个元素
lpop key
rpop key
2.4 set
set存储的数据是不重复、没有顺序
sadd key member [member …]
srem key member [member …]
2.5 zset
zadd key score member [score member …]
2.6 通用命令
keys mylist* #### 返回满足条件的所有key
del test
exists test #### 确认key test是否存在
expire key seconds #### 设置key的生存时间(单位:秒)
ttl key #### 查看key剩余的生存时间
persist key #### 清除生存时间
pexpire key milliseconds #### 生存时间设置单位为毫秒
type key ### # 显示指定key的数据类型