一. Redis的数据类型(面试问题)
1.Redis中数据是key-value形式。不同类型Value是有不同的命令进行操作。key为字符串类型,value常用类型:
1)String 字符串
2)Hash哈希表 是Map
3)List列表 如:[1,2,3,4,2],值可重复。
4)Set 集合 如:[1,3,9,2] ,值不可重复。
5)Sorted Set 有序集合(zSet) 如:[3,1,9],给每个值人为绑定一个值,叫Score.按照Score升序排列;存储的真实数据是那个值。
Redis在1和2版本没有集群概念,在3版本开始有了集群概念。
Redis命令相关手册有很很多,下面为其中比较好用的两个
https://www.redis.net.cn/order/
http://doc.redisfans.com
2.Redis命令的使用
2.1 String字符串的使用:
1)get和set命令的使用
2)setnx:key不存在,可以设置成功,key存在,设置返回值0失败。1成功。这个不可以实现覆盖。即一个key被使用后,不可以修改key的值。
3)setex:设置key和value以及存活时长, 以秒为单位,时间到后自动删除。这个可以实现覆盖。即一个key被使用后,还可以修改key的值。
4)查看当前这个库中都存了哪些数据:
keys gender #检查gender存不存在 keys * #检查有哪些key ttl key #检查key还可以存活多少秒
ttl key #返回值如果是-2,代表key不存在,返回值如果是-1.代表永久有效,如果是正数,显示还可以存活多少秒。
5)exists key1 key2 key3 key4 … ,返回key的存活时间。
exists key key ... #统计这些key中,存活的个数。
- expire key time
expire name 100 #设置name的存活有效期
6) del key1 key2 key3 …
del key1 key2 key3 .... #删除key
7 ) persist
persist key #移除key的过期时间,key将持久保持
8)mset key1 val1 key2 val2 key3 val3 … mset(集群不支持)
一次设置多个键值
mset a a1 b b2 c c3
9)mget key1 val1 key2 val2 key3 val3 … mget(集群不支持)
一次获得多个值
mget a b c
2.2 哈希表的命令
1)hset和hget的使用
2)hkeys key:获得key所有的Field
hget stu #获得stu对应的所有的key
3) hvals stu:获得key所有的val
hvals stu #获得stu对应的所有的value
4) hgetall stu #获得stu所有key和value
hgetall stu #获得stu的所有key和value
5) hmset :一次设置多个Field
hmset stu2 name "li si" age 21 gender male
- hmget 一次获得多个Field中的value
hmget stu2 name age gender
- hdel 删除key中Field的key对应的值
hdel stu2 name age #删除stu2对应的Field中的键和值,当Field删除完毕后,删除stu2这个key.
8)hkeys stu2
hkeys stu2 #获得stu2对应的Field中的key
2.3 Lis列表命令
1)rpush命令:给集合的末尾添加元素;相当于队列;
rpush my_list a b a c
2)lrange 命令
lrange my_list 0 -1 #查看my_list中的数据,0代表开始,-1代表结束。
或者
lrange my_list 0 len #len指my_list中的元素个数
3)lpush命令:给集合的头部添加元素;相当于栈;
4)llen 获得集合的长度
llen my_list #获得my_list这个集合的长度
5)lrem 删除数据
lrem my_list n m #删除my_list集合中n个m元素,n是正数,从前往后删,n是负数,从后往前删。数字大小代表删除元素的个数。
2.4 Set集合命令
1)sadd 向集合中添加元素:
sadd my_set a b a c 1 2 3 #向集合my_set中添加元素a b a c 1 2 3 sadd my_set d e f #向集合my_set中添加元素d e f
2)) smembers 查询元素
smembers my_set #查询集合my_set中的元素
3)SCARD 查询集合的元素个数
SCARD my_set #查询my_sey集合中的元素个数
4)SREM 删除集合中的元素
SREM my_set a b c #删除my_set集合中的元素
2.5 zSet命令
1)zadd 命令
zadd my_zset 1 a 0 b 2 c 9 d 5 e #my_zset后第一个参数是用于排序的分数,第二个参数是分数对应的值
2)zrange 命令
zrange my_zset 0 -1 #查看my_zset中的元素,当分数相同的时候,按照分数依次排列。值相同,分数不同,按照分数排序。
3)zrem命令
zrem my_zset n #n是元素,这里是删除my_zset集合中元素n
4)ZCARD 查看zset集合中的元素个数
ZCARD my_zset #获得my_zset集合中的元素个数



