redis基本类型与操作

1、Redis版本约定
小数点之后的第一位是偶数为稳定版本
小数点之后的第一位是奇数为不稳定版本

2、redis启动与停止
启动:redis-server redis服务会默认启动6379端口号
           redis-server --port 6370 启动指定端口的redis
停止:
           最好不要强制停止,因为redis可能正在往硬盘中写入数据,强制停止会造成数据丢失
           正确停止的方法:redis-cli shutdown 默认服务127.0.0.1 默认端口6379
           redis-cli shutdown
           向redis发动shutdown命令,redis收到后会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出
           kill redis的pid也可以正常停止redis

3、redis-cli redis命令行客户端
可通过reids-cli向redis发送命令
发送命令的两种方式:
           将命令作为redis-cli的参数执行,如
                      redis-cli -h ip -p port 连接指定ip与port的redis
                      redis shutdown 停止reids
                      redis-cli ping 连接是否正常,正常返回pong
           执行redis-cli不带参数进入redis交互模式,可自由输入命令

4、 redis多数据库
(1)redis是字典结构的存储服务器
           一个redis可提供多个用于存储数据的字典,每个字典(类似于数据库)对外是一个从0开始递增的数字,
           这些字典不支持自定义也不能对每个库设置不同的密码
           与mysql库最大的区别在于每个库之间并不是完全隔离的,如flushall可以清楚redis实例中所有数据库的全部数据
(2)客户端可以指定存储在那个库里面,如select 1
(3)redis默认支持16的库,即存储字典
(4)redis非常轻量级,一个空redis实例只占用内存空间大小为1MB左右

5、glob风格通配符
           ? 匹配一个
           * 匹配任意个(包括0个)
           [] 匹配括号间的任意字符,可以使用"-"表示一个范围,如:a[b-d] 则ab\ac\ad均可以
           \X 匹配字符X,用于转义字符,如匹配?,可以用?

6、、redis常用命令(redis命令不区分大小写)
(1)字符串类型常用命令:
           创建key:set keyname keyvalue
           获取所用key:keys * (当key的数量多的时候会影响性能,生产环境不建议使用)
           判断一个键是否存在:exists keyname 存在返回整数1,不存在返回整数0
           删除键:delete keyname 返回删除键的个数
           获取键值:get keyname 当键不存在的时候返回空
           获取键值的数据类型:type keyname 数据类型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使当前键值递增加1:incr keyname 如果当前存储的字符串是整数类型,使用该命令会递增,并返回递增后的值
                      如果key不存在,默认key值为0,所以使用该命令后返回1
                      如果存储的字符串不是整数类型,会报错
                      incr 的所有redis命令均为原子性操作,即命令执行的最小单位,执行过程中不会被其他命令插入
           使当前键值递减减1: decr keyname
           使当前键递增指定数值:incrby keyname 6
           使当前键递减指定数值:decrby keyname 6
           增加指定浮点数: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引号,如:" a b "
           获取字符串长度: strlen keyname 返回字符串长度,如果键不存在返回0
                       set name 你好,返回长度为6,因为汉字采用utf-编码长度均为3
           注意:reids对于键值的命名没有明确要求,但是起名字最好通俗易懂,如:user_007_gender,用户id为007的性别

(2)散列类型常用命令:
           redis以字典形式存储数据,而hash的键值也是以字典形式存储
           hash赋值:hset keyname field value
                      hsetnx keyname field value
                      均不区分插入和更新操作,如果已经存在key field则更新并返回0,如果不存在key field增插入并返回1
                      二者的区别:hsetnx是原子操作,不用担心竞争条件
           hash获取值:hget keyname field
                      hmget keyname field1 field2
           hash获取指定键值对应的所有值:hgetall keyname
           删除字段:hdel keyname field1 field2
           使字段增加数值:hincrby keyname field 10
           获取hash的所有键:hkeys keyname
           获取hash的所有键值:hvals keyname
           获取字段的数量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表类型常用命令:
           一个有序的字符串列表,操作是可以向列表两端添加元素或者获得列表中的某一片段,内部使用双向链表实现
           向列表两端插入元素:
                      向左边插入:lpush keyname value1 value2 返回值为增加元素后列表的长度
                      向右边插入:rpush keyname value1 value2 返回值为增加元素后列表的长度
           从列表两端移除元素:
                      从左边移除:lpop keyname
                      从右边移除:rpop keyname
           获取列表中元素个数:llen keyname
           获取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是从0开始,为闭区间含左含右
                      lrange命令支持负索引,表示从右边开始计算序数,
                      如lrange keyname -2 -1 取的是倒数两个元素
                      如果stop大于实际列表长度,会返回列表最右端元素
                      显然lrange keyname 0 -1 会获取所有元素
           删除列表中指定元素:lrem keyname count value 删除列中前count个值为value的元素
                      count>0 从左边还是删除, count<0 从右边开始删除, count=0 删除所有值为value的元素
           获取指定元素的索引值:lindex keyname index
           设置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 删除指定范围之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      从左往右寻找值为pivot的元素,在它的前面或者后面插入value值

(4)集合类型常用命令:
           集合中的元素无序不重复
           增加元素:sadd keyname value1 value2
           删除元素:srem keyname value1 value2
           获取集合中的所有元素:smembers keyname
           判断元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           两个集合的差集:sdiff key1 key2 返回属于key1但是不属于key2的元素
           两个集合的交集:sinter key1 key2
           两个集合的并集:sunion key1 key2
           获取集合中元素个数:scard key

(5)有序集合类型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           获取元素的分数:zscore key member1
           获取排名在某个范围内的元素列表:zrange key startindex stopindex 只返回members并按照从小到大的顺序排序
                      zrange key startindex stopindex withscores 返回members和scores
           获取指定分数范围内的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           获取指定分数范围内元素的个数:zcount keyname min max
           增加某个元素的分数:zincrby key 5(加5)/-5(减5) member 给指定的member元素添加score,返回的时增加后的结果分数
                      如果指定元素不存在,redis会先创建并赋值为0再执行
           获取集合中元素个数:zcard keyname 返回元素的个数
           删除一个或多个元素:zrem keyname member1 member2 返回成功删除的个数
           按照分数范围删除元素:zremrangebyscore keyname min max
           获取某个元素的排名:zrank keyname member? 匹配一个
(1)字符串类型常用命令:
           创建key:set keyname keyvalue
           获取所用key:keys * (当key的数量多的时候会影响性能,生产环境不建议使用)
           判断一个键是否存在:exists keyname 存在返回整数1,不存在返回整数0
           删除键:delete keyname 返回删除键的个数
           获取键值:get keyname 当键不存在的时候返回空
           获取键值的数据类型:type keyname 数据类型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使当前键值递增加1:incr keyname 如果当前存储的字符串是整数类型,使用该命令会递增,并返回递增后的值
                      如果key不存在,默认key值为0,所以使用该命令后返回1
                      如果存储的字符串不是整数类型,会报错
                      incr 的所有redis命令均为原子性操作,即命令执行的最小单位,执行过程中不会被其他命令插入
           使当前键值递减减1: decr keyname
           使当前键递增指定数值:incrby keyname 6
           使当前键递减指定数值:decrby keyname 6
           增加指定浮点数: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引号,如:" a b "
           获取字符串长度: strlen keyname 返回字符串长度,如果键不存在返回0
                       set name 你好,返回长度为6,因为汉字采用utf-编码长度均为3
           注意:reids对于键值的命名没有明确要求,但是起名字最好通俗易懂,如:user_007_gender,用户id为007的性别

(2)散列类型常用命令:
           redis以字典形式存储数据,而hash的键值也是以字典形式存储
           hash赋值:hset keyname field value
                      hsetnx keyname field value
                      均不区分插入和更新操作,如果已经存在key field则更新并返回0,如果不存在key field增插入并返回1
                      二者的区别:hsetnx是原子操作,不用担心竞争条件
           hash获取值:hget keyname field
                      hmget keyname field1 field2
           hash获取指定键值对应的所有值:hgetall keyname
           删除字段:hdel keyname field1 field2
           使字段增加数值:hincrby keyname field 10
           获取hash的所有键:hkeys keyname
           获取hash的所有键值:hvals keyname
           获取字段的数量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表类型常用命令:
           一个有序的字符串列表,操作是可以向列表两端添加元素或者获得列表中的某一片段,内部使用双向链表实现
           向列表两端插入元素:
                      向左边插入:lpush keyname value1 value2 返回值为增加元素后列表的长度
                      向右边插入:rpush keyname value1 value2 返回值为增加元素后列表的长度
           从列表两端移除元素:
                      从左边移除:lpop keyname
                      从右边移除:rpop keyname
           获取列表中元素个数:llen keyname
           获取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是从0开始,为闭区间含左含右
                      lrange命令支持负索引,表示从右边开始计算序数,
                      如lrange keyname -2 -1 取的是倒数两个元素
                      如果stop大于实际列表长度,会返回列表最右端元素
                      显然lrange keyname 0 -1 会获取所有元素
           删除列表中指定元素:lrem keyname count value 删除列中前count个值为value的元素
                      count>0 从左边还是删除, count<0 从右边开始删除, count=0 删除所有值为value的元素
           获取指定元素的索引值:lindex keyname index
           设置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 删除指定范围之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      从左往右寻找值为pivot的元素,在它的前面或者后面插入value值

(4)集合类型常用命令:
           集合中的元素无序不重复
           增加元素:sadd keyname value1 value2
           删除元素:srem keyname value1 value2
           获取集合中的所有元素:smembers keyname
           判断元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           两个集合的差集:sdiff key1 key2 返回属于key1但是不属于key2的元素
           两个集合的交集:sinter key1 key2
           两个集合的并集:sunion key1 key2
           获取集合中元素个数:scard key

(5)有序集合类型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           获取元素的分数:zscore key member1
           获取排名在某个范围内的元素列表:zrange key startindex stopindex 只返回members并按照从小到大的顺序排序
                      zrange key startindex stopindex withscores 返回members和scores
           获取指定分数范围内的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           获取指定分数范围内元素的个数:zcount keyname min max
           增加某个元素的分数:zincrby key 5(加5)/-5(减5) member 给指定的member元素添加score,返回的时增加后的结果分数
                      如果指定元素不存在,redis会先创建并赋值为0再执行
           获取集合中元素个数:zcard keyname 返回元素的个数
           删除一个或多个元素:zrem keyname member1 member2 返回成功删除的个数
           按照分数范围删除元素:zremrangebyscore keyname min max
           获取某个元素的排名:zrank keyname member* 匹配任意个(包括0个)
(1)字符串类型常用命令:
           创建key:set keyname keyvalue
           获取所用key:keys * (当key的数量多的时候会影响性能,生产环境不建议使用)
           判断一个键是否存在:exists keyname 存在返回整数1,不存在返回整数0
           删除键:delete keyname 返回删除键的个数
           获取键值:get keyname 当键不存在的时候返回空
           获取键值的数据类型:type keyname 数据类型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使当前键值递增加1:incr keyname 如果当前存储的字符串是整数类型,使用该命令会递增,并返回递增后的值
                      如果key不存在,默认key值为0,所以使用该命令后返回1
                      如果存储的字符串不是整数类型,会报错
                      incr 的所有redis命令均为原子性操作,即命令执行的最小单位,执行过程中不会被其他命令插入
           使当前键值递减减1: decr keyname
           使当前键递增指定数值:incrby keyname 6
           使当前键递减指定数值:decrby keyname 6
           增加指定浮点数: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引号,如:" a b "
           获取字符串长度: strlen keyname 返回字符串长度,如果键不存在返回0
                       set name 你好,返回长度为6,因为汉字采用utf-编码长度均为3
           注意:reids对于键值的命名没有明确要求,但是起名字最好通俗易懂,如:user_007_gender,用户id为007的性别

(2)散列类型常用命令:
           redis以字典形式存储数据,而hash的键值也是以字典形式存储
           hash赋值:hset keyname field value
                      hsetnx keyname field value
                      均不区分插入和更新操作,如果已经存在key field则更新并返回0,如果不存在key field增插入并返回1
                      二者的区别:hsetnx是原子操作,不用担心竞争条件
           hash获取值:hget keyname field
                      hmget keyname field1 field2
           hash获取指定键值对应的所有值:hgetall keyname
           删除字段:hdel keyname field1 field2
           使字段增加数值:hincrby keyname field 10
           获取hash的所有键:hkeys keyname
           获取hash的所有键值:hvals keyname
           获取字段的数量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表类型常用命令:
           一个有序的字符串列表,操作是可以向列表两端添加元素或者获得列表中的某一片段,内部使用双向链表实现
           向列表两端插入元素:
                      向左边插入:lpush keyname value1 value2 返回值为增加元素后列表的长度
                      向右边插入:rpush keyname value1 value2 返回值为增加元素后列表的长度
           从列表两端移除元素:
                      从左边移除:lpop keyname
                      从右边移除:rpop keyname
           获取列表中元素个数:llen keyname
           获取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是从0开始,为闭区间含左含右
                      lrange命令支持负索引,表示从右边开始计算序数,
                      如lrange keyname -2 -1 取的是倒数两个元素
                      如果stop大于实际列表长度,会返回列表最右端元素
                      显然lrange keyname 0 -1 会获取所有元素
           删除列表中指定元素:lrem keyname count value 删除列中前count个值为value的元素
                      count>0 从左边还是删除, count<0 从右边开始删除, count=0 删除所有值为value的元素
           获取指定元素的索引值:lindex keyname index
           设置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 删除指定范围之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      从左往右寻找值为pivot的元素,在它的前面或者后面插入value值

(4)集合类型常用命令:
           集合中的元素无序不重复
           增加元素:sadd keyname value1 value2
           删除元素:srem keyname value1 value2
           获取集合中的所有元素:smembers keyname
           判断元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           两个集合的差集:sdiff key1 key2 返回属于key1但是不属于key2的元素
           两个集合的交集:sinter key1 key2
           两个集合的并集:sunion key1 key2
           获取集合中元素个数:scard key

(5)有序集合类型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           获取元素的分数:zscore key member1
           获取排名在某个范围内的元素列表:zrange key startindex stopindex 只返回members并按照从小到大的顺序排序
                      zrange key startindex stopindex withscores 返回members和scores
           获取指定分数范围内的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           获取指定分数范围内元素的个数:zcount keyname min max
           增加某个元素的分数:zincrby key 5(加5)/-5(减5) member 给指定的member元素添加score,返回的时增加后的结果分数
                      如果指定元素不存在,redis会先创建并赋值为0再执行
           获取集合中元素个数:zcard keyname 返回元素的个数
           删除一个或多个元素:zrem keyname member1 member2 返回成功删除的个数
           按照分数范围删除元素:zremrangebyscore keyname min max
           获取某个元素的排名:zrank keyname member [] 匹配括号间的任意字符,可以使用"-“表示一个范围,如:a[b-d] 则ab\ac\ad均可以
(1)字符串类型常用命令:
           创建key:set keyname keyvalue
           获取所用key:keys * (当key的数量多的时候会影响性能,生产环境不建议使用)
           判断一个键是否存在:exists keyname 存在返回整数1,不存在返回整数0
           删除键:delete keyname 返回删除键的个数
           获取键值:get keyname 当键不存在的时候返回空
           获取键值的数据类型:type keyname 数据类型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使当前键值递增加1:incr keyname 如果当前存储的字符串是整数类型,使用该命令会递增,并返回递增后的值
                      如果key不存在,默认key值为0,所以使用该命令后返回1
                      如果存储的字符串不是整数类型,会报错
                      incr 的所有redis命令均为原子性操作,即命令执行的最小单位,执行过程中不会被其他命令插入
           使当前键值递减减1: decr keyname
           使当前键递增指定数值:incrby keyname 6
           使当前键递减指定数值:decrby keyname 6
           增加指定浮点数: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引号,如:” a b "
           获取字符串长度: strlen keyname 返回字符串长度,如果键不存在返回0
                       set name 你好,返回长度为6,因为汉字采用utf-编码长度均为3
           注意:reids对于键值的命名没有明确要求,但是起名字最好通俗易懂,如:user_007_gender,用户id为007的性别

(2)散列类型常用命令:
           redis以字典形式存储数据,而hash的键值也是以字典形式存储
           hash赋值:hset keyname field value
                      hsetnx keyname field value
                      均不区分插入和更新操作,如果已经存在key field则更新并返回0,如果不存在key field增插入并返回1
                      二者的区别:hsetnx是原子操作,不用担心竞争条件
           hash获取值:hget keyname field
                      hmget keyname field1 field2
           hash获取指定键值对应的所有值:hgetall keyname
           删除字段:hdel keyname field1 field2
           使字段增加数值:hincrby keyname field 10
           获取hash的所有键:hkeys keyname
           获取hash的所有键值:hvals keyname
           获取字段的数量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表类型常用命令:
           一个有序的字符串列表,操作是可以向列表两端添加元素或者获得列表中的某一片段,内部使用双向链表实现
           向列表两端插入元素:
                      向左边插入:lpush keyname value1 value2 返回值为增加元素后列表的长度
                      向右边插入:rpush keyname value1 value2 返回值为增加元素后列表的长度
           从列表两端移除元素:
                      从左边移除:lpop keyname
                      从右边移除:rpop keyname
           获取列表中元素个数:llen keyname
           获取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是从0开始,为闭区间含左含右
                      lrange命令支持负索引,表示从右边开始计算序数,
                      如lrange keyname -2 -1 取的是倒数两个元素
                      如果stop大于实际列表长度,会返回列表最右端元素
                      显然lrange keyname 0 -1 会获取所有元素
           删除列表中指定元素:lrem keyname count value 删除列中前count个值为value的元素
                      count>0 从左边还是删除, count<0 从右边开始删除, count=0 删除所有值为value的元素
           获取指定元素的索引值:lindex keyname index
           设置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 删除指定范围之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      从左往右寻找值为pivot的元素,在它的前面或者后面插入value值

(4)集合类型常用命令:
           集合中的元素无序不重复
           增加元素:sadd keyname value1 value2
           删除元素:srem keyname value1 value2
           获取集合中的所有元素:smembers keyname
           判断元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           两个集合的差集:sdiff key1 key2 返回属于key1但是不属于key2的元素
           两个集合的交集:sinter key1 key2
           两个集合的并集:sunion key1 key2
           获取集合中元素个数:scard key

(5)有序集合类型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           获取元素的分数:zscore key member1
           获取排名在某个范围内的元素列表:zrange key startindex stopindex 只返回members并按照从小到大的顺序排序
                      zrange key startindex stopindex withscores 返回members和scores
           获取指定分数范围内的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           获取指定分数范围内元素的个数:zcount keyname min max
           增加某个元素的分数:zincrby key 5(加5)/-5(减5) member 给指定的member元素添加score,返回的时增加后的结果分数
                      如果指定元素不存在,redis会先创建并赋值为0再执行
           获取集合中元素个数:zcard keyname 返回元素的个数
           删除一个或多个元素:zrem keyname member1 member2 返回成功删除的个数
           按照分数范围删除元素:zremrangebyscore keyname min max
           获取某个元素的排名:zrank keyname member\X 匹配字符X,用于转义字符,如匹配?,可以用?

6、redis常用命令(redis命令不区分大小写)
(1)字符串类型常用命令:
           创建key:set keyname keyvalue
           获取所用key:keys * (当key的数量多的时候会影响性能,生产环境不建议使用)
           判断一个键是否存在:exists keyname 存在返回整数1,不存在返回整数0
           删除键:delete keyname 返回删除键的个数
           获取键值:get keyname 当键不存在的时候返回空
           获取键值的数据类型:type keyname 数据类型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使当前键值递增加1:incr keyname 如果当前存储的字符串是整数类型,使用该命令会递增,并返回递增后的值
                      如果key不存在,默认key值为0,所以使用该命令后返回1
                      如果存储的字符串不是整数类型,会报错
                      incr 的所有redis命令均为原子性操作,即命令执行的最小单位,执行过程中不会被其他命令插入
           使当前键值递减减1: decr keyname
           使当前键递增指定数值:incrby keyname 6
           使当前键递减指定数值:decrby keyname 6
           增加指定浮点数: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引号,如:" a b "
           获取字符串长度: strlen keyname 返回字符串长度,如果键不存在返回0
                       set name 你好,返回长度为6,因为汉字采用utf-编码长度均为3
           注意:reids对于键值的命名没有明确要求,但是起名字最好通俗易懂,如:user_007_gender,用户id为007的性别

(2)散列类型常用命令:
           redis以字典形式存储数据,而hash的键值也是以字典形式存储
           hash赋值:hset keyname field value
                      hsetnx keyname field value
                      均不区分插入和更新操作,如果已经存在key field则更新并返回0,如果不存在key field增插入并返回1
                      二者的区别:hsetnx是原子操作,不用担心竞争条件
           hash获取值:hget keyname field
                      hmget keyname field1 field2
           hash获取指定键值对应的所有值:hgetall keyname
           删除字段:hdel keyname field1 field2
           使字段增加数值:hincrby keyname field 10
           获取hash的所有键:hkeys keyname
           获取hash的所有键值:hvals keyname
           获取字段的数量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表类型常用命令:
           一个有序的字符串列表,操作是可以向列表两端添加元素或者获得列表中的某一片段,内部使用双向链表实现
           向列表两端插入元素:
                      向左边插入:lpush keyname value1 value2 返回值为增加元素后列表的长度
                      向右边插入:rpush keyname value1 value2 返回值为增加元素后列表的长度
           从列表两端移除元素:
                      从左边移除:lpop keyname
                      从右边移除:rpop keyname
           获取列表中元素个数:llen keyname
           获取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是从0开始,为闭区间含左含右
                      lrange命令支持负索引,表示从右边开始计算序数,
                      如lrange keyname -2 -1 取的是倒数两个元素
                      如果stop大于实际列表长度,会返回列表最右端元素
                      显然lrange keyname 0 -1 会获取所有元素
           删除列表中指定元素:lrem keyname count value 删除列中前count个值为value的元素
                      count>0 从左边还是删除, count<0 从右边开始删除, count=0 删除所有值为value的元素
           获取指定元素的索引值:lindex keyname index
           设置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 删除指定范围之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      从左往右寻找值为pivot的元素,在它的前面或者后面插入value值

(4)集合类型常用命令:
           集合中的元素无序不重复
           增加元素:sadd keyname value1 value2
           删除元素:srem keyname value1 value2
           获取集合中的所有元素:smembers keyname
           判断元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           两个集合的差集:sdiff key1 key2 返回属于key1但是不属于key2的元素
           两个集合的交集:sinter key1 key2
           两个集合的并集:sunion key1 key2
           获取集合中元素个数:scard key

(5)有序集合类型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           获取元素的分数:zscore key member1
           获取排名在某个范围内的元素列表:zrange key startindex stopindex 只返回members并按照从小到大的顺序排序
                      zrange key startindex stopindex withscores 返回members和scores
           获取指定分数范围内的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           获取指定分数范围内元素的个数:zcount keyname min max
           增加某个元素的分数:zincrby key 5(加5)/-5(减5) member 给指定的member元素添加score,返回的时增加后的结果分数
                      如果指定元素不存在,redis会先创建并赋值为0再执行
           获取集合中元素个数:zcard keyname 返回元素的个数
           删除一个或多个元素:zrem keyname member1 member2 返回成功删除的个数
           按照分数范围删除元素:zremrangebyscore keyname min max
           获取某个元素的排名:zrank keyname member

猜你喜欢

转载自blog.csdn.net/qq_32657967/article/details/83056536