Class: Familia::StringKey
- Defined in:
- lib/familia/data_type/types/stringkey.rb
Instance Attribute Summary collapse
-
#features_enabled ⇒ Object
included
from Features
readonly
Returns the value of attribute features_enabled.
- #logical_database(val = nil) ⇒ Object included from DataType::ClassMethods
-
#parent ⇒ Object
included
from DataType::ClassMethods
Returns the value of attribute parent.
-
#prefix ⇒ Object
included
from DataType::ClassMethods
Returns the value of attribute prefix.
-
#suffix ⇒ Object
included
from DataType::ClassMethods
Returns the value of attribute suffix.
-
#uri(val = nil) ⇒ Object
included
from DataType::ClassMethods
Returns the value of attribute uri.
Attributes included from Settings
#current_key_version, #default_expiration, #delim, #encryption_keys, #encryption_personalization, #logical_database, #prefix, #schema_path, #schema_validator, #schemas, #strict_write_order, #suffix, #transaction_mode
Instance Method Summary collapse
- #append(val) ⇒ Object (also: #<<)
-
#char_count ⇒ Integer
(also: #size, #length)
Returns the number of elements in the list.
- #decrement ⇒ Object (also: #decr)
- #decrementby(val) ⇒ Object (also: #decrby)
- #del ⇒ Object
-
#deserialize_value(val) ⇒ Object
StringKey returns raw values (not JSON parsed).
- #empty? ⇒ Boolean
- #getbit(offset) ⇒ Object
- #getrange(spoint, epoint) ⇒ Object
- #getset(val) ⇒ Object
- #increment ⇒ Object (also: #incr)
- #incrementby(val) ⇒ Object (also: #incrby)
- #init ⇒ Object
-
#serialize_value(val) ⇒ Object
StringKey uses raw string serialization (not JSON) because Redis string operations like INCR, DECR, APPEND operate on raw values.
- #setbit(offset, val) ⇒ Object
- #setnx(val) ⇒ Object
- #setrange(offset, val) ⇒ Object
- #to_i ⇒ Object
- #to_s ⇒ Object
- #value ⇒ Object (also: #content, #get)
- #value=(val) ⇒ Object (also: #replace, #set)
Methods included from Features::Autoloader
autoload_files, included, normalize_to_config_name
Methods included from DataType::Serialization
#deserialize_values, #deserialize_values_with_nil
Methods included from DataType::DatabaseCommands
#current_expiration, #delete!, #echo, #exists?, #expire, #expireat, #move, #persist, #rename, #renamenx, #type
Methods included from DataType::Connection
#dbclient, #dbkey, #direct_access, #uri
Methods included from Connection::Behavior
#connect, #create_dbclient, #multi, #normalize_uri, #pipeline, #pipelined, #transaction, #uri=, #url, #url=
Methods included from Settings
#configure, #default_suffix, #pipelined_mode, #pipelined_mode=
Methods included from Base
add_feature, #as_json, #expired?, #expires?, find_feature, #generate_id, #to_json, #ttl, #update_expiration, #uuid
Constructor Details
This class inherits a constructor from Familia::DataType
Instance Attribute Details
#features_enabled ⇒ Object (readonly) Originally defined in module Features
Returns the value of attribute features_enabled.
#logical_database(val = nil) ⇒ Object Originally defined in module DataType::ClassMethods
#parent ⇒ Object Originally defined in module DataType::ClassMethods
Returns the value of attribute parent.
#prefix ⇒ Object Originally defined in module DataType::ClassMethods
Returns the value of attribute prefix.
#suffix ⇒ Object Originally defined in module DataType::ClassMethods
Returns the value of attribute suffix.
#uri(val = nil) ⇒ Object Originally defined in module DataType::ClassMethods
Returns the value of attribute uri.
Instance Method Details
#append(val) ⇒ Object Also known as: <<
107 108 109 110 111 |
# File 'lib/familia/data_type/types/stringkey.rb', line 107 def append(val) ret = dbclient.append dbkey, val update_expiration ret end |
#char_count ⇒ Integer Also known as: size, length
Returns the number of elements in the list
33 34 35 |
# File 'lib/familia/data_type/types/stringkey.rb', line 33 def char_count to_s.size end |
#decrement ⇒ Object Also known as: decr
93 94 95 96 97 |
# File 'lib/familia/data_type/types/stringkey.rb', line 93 def decrement ret = dbclient.decr dbkey update_expiration ret end |
#decrementby(val) ⇒ Object Also known as: decrby
100 101 102 103 104 |
# File 'lib/familia/data_type/types/stringkey.rb', line 100 def decrementby(val) ret = dbclient.decrby dbkey, val.to_i update_expiration ret end |
#del ⇒ Object
140 141 142 143 |
# File 'lib/familia/data_type/types/stringkey.rb', line 140 def del ret = dbclient.del dbkey ret.positive? end |
#deserialize_value(val) ⇒ Object
StringKey returns raw values (not JSON parsed)
25 26 27 28 29 |
# File 'lib/familia/data_type/types/stringkey.rb', line 25 def deserialize_value(val) return val if val.is_a?(Redis::Future) return @opts[:default] if val.nil? val end |
#empty? ⇒ Boolean
39 40 41 |
# File 'lib/familia/data_type/types/stringkey.rb', line 39 def empty? char_count.zero? end |
#getbit(offset) ⇒ Object
114 115 116 |
# File 'lib/familia/data_type/types/stringkey.rb', line 114 def getbit(offset) dbclient.getbit dbkey, offset end |
#getrange(spoint, epoint) ⇒ Object
124 125 126 |
# File 'lib/familia/data_type/types/stringkey.rb', line 124 def getrange(spoint, epoint) dbclient.getrange dbkey, spoint, epoint end |
#getset(val) ⇒ Object
134 135 136 137 138 |
# File 'lib/familia/data_type/types/stringkey.rb', line 134 def getset(val) ret = dbclient.getset dbkey, val update_expiration ret end |
#increment ⇒ Object Also known as: incr
79 80 81 82 83 |
# File 'lib/familia/data_type/types/stringkey.rb', line 79 def increment ret = dbclient.incr(dbkey) update_expiration ret end |
#incrementby(val) ⇒ Object Also known as: incrby
86 87 88 89 90 |
# File 'lib/familia/data_type/types/stringkey.rb', line 86 def incrementby(val) ret = dbclient.incrby(dbkey, val.to_i) update_expiration ret end |
#init ⇒ Object
7 |
# File 'lib/familia/data_type/types/stringkey.rb', line 7 def init; end |
#serialize_value(val) ⇒ Object
StringKey uses raw string serialization (not JSON) because Redis string operations like INCR, DECR, APPEND operate on raw values. This overrides the base JSON serialization from DataType.
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/familia/data_type/types/stringkey.rb', line 12 def serialize_value(val) Familia.trace :TOREDIS, nil, "#{val}<#{val.class}>" if Familia.debug? # Handle Familia object references - extract identifier if val.is_a?(Familia::Base) || (val.is_a?(Class) && val.ancestors.include?(Familia::Base)) return val.is_a?(Class) ? val.name : val.identifier end # StringKey uses raw string conversion for Redis compatibility val.to_s end |
#setbit(offset, val) ⇒ Object
118 119 120 121 122 |
# File 'lib/familia/data_type/types/stringkey.rb', line 118 def setbit(offset, val) ret = dbclient.setbit dbkey, offset, val update_expiration ret end |
#setnx(val) ⇒ Object
73 74 75 76 77 |
# File 'lib/familia/data_type/types/stringkey.rb', line 73 def setnx(val) ret = dbclient.setnx(dbkey, serialize_value(val)) update_expiration ret end |
#setrange(offset, val) ⇒ Object
128 129 130 131 132 |
# File 'lib/familia/data_type/types/stringkey.rb', line 128 def setrange(offset, val) ret = dbclient.setrange dbkey, offset, val update_expiration ret end |
#to_i ⇒ Object
57 58 59 |
# File 'lib/familia/data_type/types/stringkey.rb', line 57 def to_i value.to_i end |
#to_s ⇒ Object
51 52 53 54 55 |
# File 'lib/familia/data_type/types/stringkey.rb', line 51 def to_s return super if value.to_s.empty? value.to_s end |
#value ⇒ Object Also known as: content, get
43 44 45 46 47 |
# File 'lib/familia/data_type/types/stringkey.rb', line 43 def value echo :value, Familia.pretty_stack(limit: 1) if Familia.debug dbclient.setnx dbkey, @opts[:default] if @opts[:default] deserialize_value dbclient.get(dbkey) end |
#value=(val) ⇒ Object Also known as: replace, set
This method executes a Redis SET immediately, unlike scalar field setters which are deferred until save. If the parent object has unsaved scalar field changes, consider calling save first to avoid split-brain state.
64 65 66 67 68 69 |
# File 'lib/familia/data_type/types/stringkey.rb', line 64 def value=(val) warn_if_dirty! ret = dbclient.set(dbkey, serialize_value(val)) update_expiration ret end |