string(字符串)
string类型是redis的最基本数据类型,一个key对应value;string类型是二进制安全的,意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象;string类型的值最大能存储512MB
redis操作指令:
//添加
set $key $value 如 set name "张三"
//添加多个
mset $key $value $key $value....如 mset sex 23 sds ss
//获取
get $key 如 get name
//获取多个key的value值
mget $key 如 mget name name2
//数字递增
incr $key 如 incr num ,value值必须是整数
//递减
decr $key 如 decr num
//指定key追加字符
append $key $value 如 append name ss ,成功会返回value值的长度
//获取key的value值长度
strlen $key 如 strlen name
hash(哈希,散列)
hash 是一个键值对集合,是字符串字段和字符串值之间的映射,因此它们是表示对象的完美数据类型(例如,具有多个字段的用户,如姓名,姓氏,年龄等)
//添加数据
hmset $key {$key $value ...} 如hmset user name 晓阳 sex 1
//获取数据
hget $key {$key} 如hget user name 获取user中的name的value值
//获取全部
hgetall $key 如hgetall user
//字段是否存在(存在返回1不存在返回0)
hexists $key {$key} 如 hexists user name
//增加字段
hsetnx $key {$key $value} 如 hsetnx user sge 18
//删除一个或多个字段
hdel $key {$key} 如 hdel user name age
list(列表)
list是字符串列表,按插入顺序排序。列表的最大长度为2的32次方 - 1个元素,从时间复杂度的角度来看,Redis列表的主要特征是支持在头部和尾部附近恒定时间插入和删除元素,即使有数百万个插入项目。访问元素在列表的极端附近非常快,但如果您尝试访问非常大的列表的中间,则速度很慢,因为它是O(N)操作。
//从左边或右边添加数据
lpush/rpush $key $value $value.. 如 lpush list1 sss
//获取列表长度
llen $key
//取数据
lrange $key $start $stop 如 lrange list1 0 10
//从左或右删除并返回数据(可以用来做分布式消息队列)
lpop/rpop $key 如 lpop list1 删除并返回value值
//替换value
lset $key $row $value 如 lset list1 0 ss
set(集合)
set是一个无序的字符串集合,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1),与list不一样的是集合类型不能存在重复数据。
//添加set
sadd $key $value.. 如sadd set1 1 2 3
//删除set中的指定value值
srem $key $value 如srem set1 2
//比较俩个集合不同
sdiff $key $key 如 sdiff set1 set2 意思是set1存在set2不存在
//合并集合
sunion $key $key 如sunion set1 set2
zset(sorted set:有序集合)
zset 和 set 一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序,zset的成员是唯一的,但分数(score)却可以重复。
//添加,score为分数
zadd $key $score $value 如zadd zset1 100 haha
//获取元素
zrange $key $start $end 如zrange zset1 0 2,获取前三个元素
如果两个元素的score是相同的话,那么根据(0<9<A<Z<a<z) 方式从小到大
redis中的事务
MULTI 去开启事务,EXEC 去执行事务
如:
redis-test:0>MULTI
"OK"
redis-test:0>set string 222
"QUEUED"
redis-test:0>set ss ss
"QUEUED"
redis-test:0>EXEC
1) "OK"
2) "OK"
网友评论