Redis 可以存储键和五种不同类型的值之间的映射。
键
的类型只能为字符串
,值支持五种数据类型
:字符串、列表、集合、散列表、有序集合。
程序是用来处理数据的,redis是用来存储数据的,程序处理完的数据要存储到redis中,不同特点的数据要存储在redis中不同类型的数据结构中。
字符串: 单key: 单value
list列表: 有序可重复 单key: 多有序value(这里的有序指的是输入和输出的顺序)
set集合: 无序不可重读 单key: 多个无序value
pojo hash 单key : 对象(属性:值)
zset 单key: 多有序value(这里的有序指的是排序)
字符串类型是Redis中最基本的数据结构,它能存储任何类型的数据,包括二进制数据,序列化后的数据,JSON化的对象甚至是一张图片。最大512M。
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),底层是个链表结构。
Redis 的Set是 string 类型的无序无重复集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。
不同的是zset 的每个元素都会关联一个分数(分数可以重复),redis通过分数来为集合中的成员进行从小到大的排序。
是实现了sortedset接口的TreeSet集合,利用比较器实现排序
redis中存储的Key-Value
keys pattern
作用:查找所有符合模式pattern的 key。 pattern可以使用通配符通配符:
*
:表示0或多个
字符,例如: keys*查询所有的 key。
?
:表示单个
字符,例如: wo?d,匹配word , wood
[]
:表示选择[]内的一个字符,例如 wo[or]d,匹配word, wood,不匹配wold、woord
keys *
: 查看数据库实例中所有的key
keys k*
:查看数据中所有以k开头的key
keys h*o
:查看数据中所有以h开头以o结尾的key
keys h[abc]llo
:查看数据中所有以h开头以llo结尾,并且h后边只能取abc中的一个字符的key
exists key
如果存在,返回1;如果不存在,则返回0
exists key [key key .....]
返回值是存在的可以的数量
move k 1
用的很少,一般情况下,一个数据库实例对应一个项目,这种转移key到另外一个数据库实例中用的很少
time to live
ttl k1
查看k1的剩余生存时间
如果k1不存在返回-2.
如果k1没有设置生存时间返回-1,只要不宕机数据一直存在
expire k2 20
给k2设置生存时间20s,,,到时间数据消失
type k1
返回当前数据类型
rename k1 k2
把k1更改为k2,,,值不变只是重命名了key
del key
删除指定key的数据,返回值是实际删除key的数量
也可以删除多个数据
del k1 k2 k3 ....
删除多条数据
set zsname zhangsan
set zsage 20
set totalRows 100
get zsname
get zsage
get totalRows
set phone 1388888
添加key-value
append phone 6666
在key=phone的值中追加6666,返回追加之后的字符串长度
如果key不存在,则创建key-value
strlen phone
获取字符串的长度
incr zsage
将张三的年龄值加1 ,返回加1运算之 后的值
如果key不存在,首先设置一个key,值初始化为0,然后进行incr运算
要求key所表示value必须是数值,否则,报错
incr zsname 报错
incrby key offset
incrby zsage 10
对张三数据进行加10运算,
decrby zsage 10
对张三数据进行减10运算
截取下标是从0开始,闭区间截取
从左往右下标是0,1,2,3…
从右往左下标是-1,-2,-3 …
zhangsan
getrange zsname 2 3
返回结果是an
gettrange zsname 2 -3
返回结果 angs
zhangshan
setrange zsname 5 xiaoming
修改之后的数据为zhangxiaoming