一. 分类
redis 有五种数据类型: String,map,list,set,zset(set 的有序集合)
二. String
存: set
语法: set key value [EX seconds] [PX milliseconds] [NX|XX]
redis> set myStr test
OK
取: get
语法: get key
- redis> get myStr
- "test"
删除: del
语法: del key [key ...]
- redis> del myStr
- (integer) 1
三. map
存: hmset
语法: hmset key field value [field value ...]
redis> hmset mymap field1 value1 field2 value2
OK
取: hget(取单个),hgetall(取所有)
语法 1:hget key field
eg:
redis> hget mymap field2
"value2"
语法 2:hgetall key
- eg:
- redis> hgetall mymap
- 1) "field1"
- 2) "value1"
- 3) "field2"
- 4) "value2"
- 5) "field3"
- 6) "value3"
删: hdel
语法: hdel key field [field ...]
- redis> hdel map field1 field2
- (integer) 2
四. list
存: lpush
语法: lpush key value [value ...]
eg:
redis> lpush mylist v1 v2 v3 v4
(integer) 4
取:
1. 读取列表: lrange
语法: lrange key start stop
eg:
redis> lrange mylist 0 10
- ) "v4"
- ) "v3"
- ) "v2"
- ) "v1"
2. 按索引读取: lindex
语法: lindex key index(index 从 0 开始)
redis> lindex mylist 2
"v2"
3. 按值查索引
删除
1. 头部弹出, 并返回值 lpop(rpop 尾部弹出 刚好和这个相反)
redis> lrange mylist 0 10
- 1) "v4"
- 2) "v3"
- 3) "v2"
- 4) "v1"
- redis> lpop mylist
- "v4"
redis> lrange mylist 0 10
- ) "v3"
- ) "v2"
- ) "v1"
上面刚开始查 "v4" 在最上面, 执行完 lpop 后 "v4" 被返回, 再次执行查看语句, 发现 "v4" 已经被移出
2.lrem : 删除 list 中某个值.
语法: lrem key count value
- ##count = 0 删除全部
- ##count = -n(n>0) 从尾部删除 删 n 个
- ##count = n(n>0) 从头部删 删 n 个
- ## 查看原始 list
- 127.0.0.1:6379> lrange mylist 0 10
- 1) "v3"
- 2) "v2"
- 3) "v7"
- 4) "v3"
- 5) "v5"
- 6) "v4"
- 7) "v3"
- 8) "v2"
- 9) "v1"
- ## 执行删除 count 设为 0 删除所有值为 v3 的结点
- 127.0.0.1:6379> lrem mylist 0 v3
- (integer) 3
- ## 查看删除后的 list, 值为 v3 的不见了
- 127.0.0.1:6379> lrange mylist 0 10
- 1) "v2"
- 2) "v7"
- 3) "v5"
- 4) "v4"
- 5) "v2"
- 6) "v1"
- ## 再次执行删除 count 设置为 - 1 删除值为 v2 的
- 127.0.0.1:6379> lrem mylist -1 v2
- (integer) 1
- ## 查看结果, 原来 v2 位置分别是 1 和 5 现在 5 的位置 v2 被删除了, 说明删除是从尾部开始的
- 127.0.0.1:6379> lrange mylist 0 10
- 1) "v2"
- 2) "v7"
- 3) "v5"
- 4) "v4"
- 5) "v1"
- ## 插入几条数据后继续查看 -1 代表到结尾
- 127.0.0.1:6379> lrange mylist 0 -1
- 1) "v2"
- 2) "v4"
- 3) "v3"
- 4) "v5"
- 5) "v4"
- 6) "v1"
- ## 执行删除操作 从头部删除 删除两个
- 127.0.0.1:6379> lrem mylist 2 v4
- (integer) 2
- ## 可以看到 v4 都没了
- 127.0.0.1:6379> lrange mylist 0 -1
- 1) "v2"
- 2) "v3"
- 3) "v5"
- 4) "v1"
3.ltrim: 截取某个范围的 list
语法: ltrim key start stop
- eg:
- 127.0.0.1:6379> lrange mylist 0 -1
- 1) "v2"
- 2) "v3"
- 3) "v5"
- 4) "v1"
- 127.0.0.1:6379> ltrim mylist 1 -1
- OK
- 127.0.0.1:6379> lrange mylist 0 -1
- 1) "v3"
- 2) "v5"
- 3) "v1"
上述例子可以看出, 当我 ltrim 范围选择 1 -1(redis 中尾部) 他会将 mylist 截取掉原本 index =0 的 v2, 保留 index 范围在 1~-1 之间的数
五. set
存: sadd
语法 SADD key member [member ...]
- eg:
- ## 因为 set 不能重复 所以只插入了四条
127.0.0.1:6379> SADD myset v1 v2 v3 v4 v2
- (integer) 4
- ## 当插入值上面存在时插入失败
127.0.0.1:6379> sadd myset v3
- (integer) 0
- ## 当插入值 set 中不存在插入成功
127.0.0.1:6379> sadd myset v5
(integer) 1
取: smembers
语法: smembers key
- eg:
- 127.0.0.1:6379> SMEMBERS myset
- 1) "v5"
- 2) "v2"
- 3) "v9"
- 4) "v1"
- 5) "v3"
- 6) "v4"
由此可以看出 set 是无序的 做个试验发现 只有当 set 中数据变动时顺序才改变
- ## 第一次查看 set 值
- 127.0.0.1:6379> SMEMBERS myset
- 1) "v5"
- 2) "v2"
- 3) "v9"
- 4) "v1"
- 5) "v3"
- 6) "v4"
- ## 第二次查看 set 值 期间没有数据变动 数据顺序与第一次一样
- 127.0.0.1:6379> SMEMBERS myset
- 1) "v5"
- 2) "v2"
- 3) "v9"
- 4) "v1"
- 5) "v3"
- 6) "v4"
- ## 第三次查看 set 值 期间没有数据变动 数据顺序与第一次一样
- 127.0.0.1:6379> SMEMBERS myset
- 1) "v5"
- 2) "v2"
- 3) "v9"
- 4) "v1"
- 5) "v3"
- 6) "v4"
- ## 先添加一个已有的数据 造成数据添加失败 查看是否会变化
127.0.0.1:6379> sadd myset v9
- (integer) 0
- ## 第四次查看 set 由于数据添加失败, 数据顺序还是与第一次一致
- 127.0.0.1:6379> SMEMBERS myset
- 1) "v5"
- 2) "v2"
- 3) "v9"
- 4) "v1"
- 5) "v3"
- 6) "v4"
- ## 添加一个没有的数据 造成 set 插入现象
127.0.0.1:6379> sadd myset v10
- (integer) 1
- ## 查看数据 发现原本的 set 中的值相对位置也没有发生变化 只有新插入的值随机插了一个地方
- 127.0.0.1:6379> SMEMBERS myset
- 1) "v5"
- 2) "v2"
- 3) "v9"
- 4) "v1"
- 5) "v10"
- 6) "v3"
- 7) "v4"
- ## 再次添加成功测试
127.0.0.1:6379> sadd myset v6
- (integer) 1
- ## 结果与上次一样 说明 set 是随机插入 但是插入后顺序不变
- 127.0.0.1:6379> SMEMBERS myset
- 1) "v5"
- 2) "v2"
- 3) "v6"
- 4) "v9"
- 5) "v1"
- 6) "v10"
- 7) "v3"
- 8) "v4"
六. tset
存: zadd
语法: zadd key [NX|XX] [CH] [INCR] score member [score member ...]
- eg:
- 127.0.0.1:6379> zadd myzset 0 v1
- (integer) 1
- 127.0.0.1:6379> zadd myzset 1 v2
- (integer) 1
- 127.0.0.1:6379> zadd myzset 0 v3
- (integer) 1
取: ZRANGEBYSCORE
语法: ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
- eg:
- 127.0.0.1:6379> ZRANGEBYSCORE myzset 0 10
- 1) "v1"
- 2) "v3"
- 3) "v2"
来源: http://www.bubuko.com/infodetail-2605920.html