Redis数据类型
哪里去获得redis常见数据类型操作命令?http://redisdoc.com/
1、String(字符串)
string是redis最基本的类型,可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
2、Hash(哈希)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
类似Java里面的Map<String,Object>
3、List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
它的底层实际是个链表
4、Set(集合)
Redis的Set是string类型的无序集合。它是通过HashTable实现实现的,
5、zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
Redis 键(key)
1、开启redis,默认端口为6379
ps -ef|gerp redis ##查看redis是否已经开启与redis启动端口
redis-server redis-conf ##使用哪个配置文件启动redis
redis-cli -h 127.0.0.1 -p 6379 #启动redis
ping ##返回一个pong,表示已经连接上redis
2、key * 展示所有key
127.0.0.1:6379> keys * 1) "mylist" 2) "test" 3) "auditState" 4) "list" 5) "l"
3、 exists key的名字,判断某个key是否存在,存在返回1,不存在返回(Integer)0
127.0.0.1:6379> exists key list (integer) 1
4、 move key db --->当前库就没有了,被移除了
127.0.0.1:6379> move list 1 (integer) 1 127.0.0.1:6379> get list (nil) 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> keys * 1) "list" 127.0.0.1:6379[1]> select 0 OK 127.0.0.1:6379>
5、为给定的key设置过期时间 --->expire key time
127.0.0.1:6379> expire mylist 15 (integer) 1 127.0.0.1:6379> ttl mylist (integer) 5 127.0.0.1:6379>
6、 ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
127.0.0.1:6379> ttl mylist (integer) 5 127.0.0.1:6379> ttl mylist (integer) -2 127.0.0.1:6379> ttl l (integer) -1 127.0.0.1:6379>
7、 type key 查看你的key是什么类型
127.0.0.1:6379> type list list 127.0.0.1:6379> type test string
Redis字符串(String)(单值单value)
1、 set/get/del/append/strlen
127.0.0.1:6379> set myredis myredis OK 127.0.0.1:6379> get myredis "myredis" 127.0.0.1:6379> del myredis (integer) 1 127.0.0.1:6379> set myredis "111" 127.0.0.1:6379> append myredis 2 (integer) 4 127.0.0.1:6379> get myredis "1112" 127.0.0.1:6379> strlen myredis (integer) 4
2、Incr/decr/incrby/decrby,一定要是数字才能进行加减
127.0.0.1:6379> set mykey 1 OK 127.0.0.1:6379> incr mykey (integer) 2 127.0.0.1:6379> decr mykey (integer) 1 127.0.0.1:6379> incrby mykey 10 (integer) 11 127.0.0.1:6379> decrby mykey 10 (integer) 1
3、 getrange/setrange
GETRANGE key start end
返回 key
中字符串值的子字符串,字符串的截取范围由 start
和 end
两个偏移量决定(包括 start
和 end
在内)。
负数偏移量表示从字符串最后开始计数, -1
表示最后一个字符, -2
表示倒数第二个,以此类推。
GETRANGE 通过保证子字符串的值域(range)不超过实际字符串的值域来处理超出范围的值域请求。
127.0.0.1:6379> getrange mystr 0 -1 "12345" 127.0.0.1:6379> setrange mystr 0 2 (integer) 5 127.0.0.1:6379> get mystr "22345"
4、setex(set with expire)键秒值/setnx(set if not exist)将值 value
关联到 key
,并将 key
的生存时间设为 seconds
(以秒为单位)。
setex:设置待过期时间的key,动态设置。
setex 键 秒值 真实值
setnx:只有在 key 不存在时设置 key 的值。
127.0.0.1:6379> setex mykey 15 v OK 127.0.0.1:6379> ttl mykey (integer) 12
127.0.0.1:6379> get job "111" 127.0.0.1:6379> setnx myredis 111 (integer) 0
5、mset/mget/msetnx
mset:同时设置一个或多个 key-value 对。
mget:获取所有(一个或多个)给定 key 的值。
msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
27.0.0.1:6379> mset name huang sex nan age 12 OK 127.0.0.1:6379> mget name sex age 1) "huang" 2) "nan" 3) "12"
6、getset(先get再set)
127.0.0.1:6379> get myredis "123" 127.0.0.1:6379> get myredis "123" 127.0.0.1:6379> getset myredis 456 "123" 127.0.0.1:6379> get myredis "456"
Redis列表(List)(单值多value)
1、 lpush(栈结构)/rpush(队列结构)/lrange
127.0.0.1:6379> lpush ll 1 2 3 4 5 (integer) 5 127.0.0.1:6379> lrange ll 0 -1 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 127.0.0.1:6379> rpush lr 1 2 3 4 5 (integer) 5 127.0.0.1:6379> lrange lr 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5"
2、lpop 移除并返回列表 key
的头元素(移除掉的)。
127.0.0.1:6379> lrange ll 0 -1 1) "3" 2) "2" 3) "1" 127.0.0.1:6379> lpop ll "3" 127.0.0.1:6379> lrange ll 0 -1 1) "2" 2) "1"
rpop:移除并返回列表 key
的尾元素(移除掉的)。
127.0.0.1:6379> rpop ll "1" 127.0.0.1:6379> lrange ll 0 -1 1) "2" 127.0.0.1:6379>
3、 lindex,按照索引下标获得元素(从上到下)
lindex key index
127.0.0.1:6379> lrange lr 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 127.0.0.1:6379> lindex lr 0 "1"
127.0.0.1:6379> lrange ll 0 -1 1) "4" 2) "3" 3) "2" 4) "1" 127.0.0.1:6379> lindex ll 0 "4"
4、llen
127.0.0.1:6379> llen ll (integer) 4 127.0.0.1:6379> lrange ll 0 -1 1) "4" 2) "3" 3) "2" 4) "1"
5、 lrem key 删N个value
* 从left往right删除2个值等于v1的元素,返回的值为实际删除的数量
* LREM list3 0 值,表示删除全部给定的值。零个就是全部值