Redis的五大数据类型
redis的五大数据类型是,String(字符串),Hash(哈希),List(列表),Set(集合),zset(sorted set: 有序集合)
string字符串
string是redis最基本的类型,一个key对应一个value
Str1 := "hello"
Str2 := "张三"
string是redis最基本的类型,一个key对应一个value
string类型是二进制安全的,除普通的字符串除外,也可以存放图片等数据
redis中字符串value最大是512M
举例: 存放一个地址信息
1127.0.0.1:6379> set address 北京
OK
127.0.0.1:6379> get address
"xe5x8cx97xe4xbaxac"
127.0.0.1:6379> del address
(integer) 1
127.0.0.1:6379> get address
(nil)
.0.1:6379> set address 北京
OK
127.0.0.1:6379> get address
"xe5x8cx97xe4xbaxac"
redis存放带生存时间的值
setex 键 秒 值
127.0.0.1:6379> setex mess01 10 hello,you //设置mess01 10s过期
OK
127.0.0.1:6379> get mess01
"hello,you"
127.0.0.1:6379> get mess01 //等待10秒后再获取发现变成空值了
(nil)
redis一次设置多个键值
127.0.0.1:6379> mset worker01 tom worker02 scott
OK
127.0.0.1:6379> get worker01
"tom"
127.0.0.1:6379> get worker02
"scott"
127.0.0.1:6379> mget worker01 worker02
1) "tom"
2) "scott"
存储hash值
redis hash是一个键值对集合
redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象
127.0.0.1:6379> hset user1 name "smith"
(integer) 1
127.0.0.1:6379> hset user1 age 30
(integer) 1
127.0.0.1:6379> hget user1 name
"smith"
127.0.0.1:6379> hget user1 age
"30"
127.0.0.1:6379> hgetall user1 //一次获取所有信息
1) "name"
2) "smith"
3) "age"
4) "30"
127.0.0.1:6379> hmset user2 name jerry age 110 job "Go coder" //一次设置一个用户所有信息
OK
127.0.0.1:6379> hmget user2 name age //一次获取多个字段,可选字段
1) "jerry"
2) "110"
127.0.0.1:6379> hlen user2 //判断对象有多少个字段
(integer) 3
127.0.0.1:6379> HEXISTS user2 age //判断对象有无此字段
(integer) 1
redis中的list
127.0.0.1:6379> lpush city beijing shanghai tianjing //从list左边添加
(integer) 3
127.0.0.1:6379> lrange city 0 -1
1) "tianjing"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> rpush city suzhou //从list右边边添加
(integer) 4
127.0.0.1:6379> lrange city 0 -1
1) "tianjing"
2) "shanghai"
3) "beijing"
4) "suzhou" //因为从右边添加的,所以suzhou出现在最后
127.0.0.1:6379> lrange city 0 1 //取第一个到第二个,包括第二个
1) "tianjing"
2) "shanghai"
127.0.0.1:6379> lrange city 0 -2 //取第一个到倒数第二个
1) "tianjing"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> lpop city //左边弹出一个数据
"tianjing"
127.0.0.1:6379> lrange city 0 -1
1) "shanghai"
2) "beijing"
3) "suzhou"
127.0.0.1:6379> rpop city //右边弹出一个数据
"suzhou"
127.0.0.1:6379> lrange city 0 -1 //最右边的数据没了
1) "shanghai"
2) "beijing"
127.0.0.1:6379> del city //删除链表
(integer) 1
127.0.0.1:6379> lrange city 0 -1
(empty list or set)
redis中的set
redis的set是string类型的无序集合
底层是HashTable数据结构,Set也是存放很多字符串元素,字符串元素是无序的,而且元素的值不能重复
127.0.0.1:6379> sadd emails tom@sohu.com jerry@qq.com //给set添加两个元素
(integer) 2
127.0.0.1:6379> smembers emails //取出所有值
1) "tom@sohu.com"
2) "jerry@qq.com"
127.0.0.1:6379> sismember emails kk@163.com //判断是不是集合的成员
(integer) 1
127.0.0.1:6379> sismember emails ff@qq.com
(integer) 0
127.0.0.1:6379> srem emails tom@sohu.com //删除指定的值
(integer) 1
127.0.0.1:6379> smembers emails //可以看到tom被删除了
1) "kk@163.com"
2) "yy@gmail.com"
3) "jerry@qq.com"