您的位置:首页 > 数据库 > Redis

Redis学习笔记(1)

2015-08-15 22:06 489 查看
开始我项目缓存用的memcached,但是一位大神推荐我用Redis。因为memcached不是持久化数据库。下面先说说memcached和Redis的区别。

Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。

内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。

性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。

学习redis,要先学习他的几个数据类型
先熟悉几个基础命令
进入redis客户端
redis-cli

redis是键值对存储方式 set key value

SET bar 1

这样就把key为bar的值设为1
KEYS ×  <span style="font-family:Microsoft Yahei,Helvetica Neue,Helvetica,Arial,sans-serif;">查找所有键 KEYS遍历所有键,如果数量多肯定会影响性能。所及不建议使用,可以这样写KEYS ba× 或KEYS bar</span>

EXISTS key 判断键存在,有返回1,否则返回0


DEL key [key....]<span style="font-family:Microsoft Yahei,Helvetica Neue,Helvetica,Arial,sans-serif;"> 删除一个或多个key 返回删除键的个数</span>


TYPE key 获取键值的数据<span style="font-family:Microsoft Yahei,Helvetica Neue,Helvetica,Arial,sans-serif;">类型,返回值可能String,hsah,list,set,zset。。。</span>


一 字符串类型

字符串类型是redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。字符串类型是其他四种类型的基础,其他数据类型和字符串类型的差别从某种角度来说就是组织字符串的形式不同。

1 赋值与取值

SET key
GET key  如果键不存在,返回空值


2 递增数字

前面说过字符串类型可以存储任何形式的字符串,当存储的是整形时,就可以用的这个命令。

INCR key 当键不是整数会报错,如果键不存在,默认为0


3 增加指定的整数

INCRBY key increment    increment代表增加的数


4 减少指定的整数

DECR  key
DECRBY key decrement


5 增加指定浮点数

INCREBYFLOAT key increment


6 向尾部追加值

APPEND key value


7 获取字符串长度

STRLEN key


8 同时获取/设置多个键值

MGET key  [key ....]
MSET key value [key value...]


9 位操作

GETBIT key offset
SETBIT key offset value
BITCOUNT key [start] [end]
BITOP operation destkey key [key...]


一个字节是由8个二进制位组成,redisi供了4个命令操作

现将foo赋值

set foo bar

这是bar二进制的存储结构

GETBIT foo 0  GETBIT命令是获得一个字符串类型键指定位置的二进制位的至(0或1),索引从0开始由左到右
如果索引超出了键值的二进制实际长度,默认返回0


SETBIT foo 6 0   SETBIT是设置二进制位的值


BITCOUNT  foo  BITCOUNT获得字符串键值是1的二进制位数个数


BITCOUNT foo  0 1 统计指定范围二进制个数


BITOP 这个命令是运算操作,支持AND,OR,XOR,NOT
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: